昨天我一直在寻找提高rabbitmq应用程序发送/接收速度的方法,并在10分钟后改变了一些东西,我的操作系统(ubuntu)说只有100mb的可用磁盘空间。我必须删除这些文件或文件夹在哪里?
更实际的问题是如何运行rabbitmq-server。以前它一直在系统启动时启动。现在不是这样,当我试图启动它descrybed这里,并在控制台看到如下:
mikhail@mikhail-GA-880GA-UD3H:~$ sudo rabbitmq-server -detached
Warning: PID file not written; -detached was passed.
Run Code Online (Sandbox Code Playgroud)
当我尝试按照这里所说的去做时,我收到了以下信息:
* Starting message broker rabbitmq-server
* FAILED - check /var/log/rabbitmq/startup_\{log, _err\}
[fail]
invoke-rc.d: initscript rabbitmq-server, action "start" failed.
Run Code Online (Sandbox Code Playgroud)
日志文件中的内容如下:
{"could not start kernel pid",application_controller,"error in config file \"/etc/rabbitmq/rabbitmq.config\" (none): no ending <dot> found"}
Run Code Online (Sandbox Code Playgroud)
在 startup_err 文件中是这样的:
Crash dump was written to: erl_crash.dump
could not start kernel pid (application_controller) (error in config file "/etc/rabbitmq/rabbitmq.config" (none): no ending <dot> found)
Run Code Online (Sandbox Code Playgroud)
UPD:我删除了我的 /config …
为什么我在使用 Asyncore 而不是使用 BlockingConnection 时会收到 AMQPConnectionError?
如果只是“Asyncore 在 Windows 中不起作用”,那就这样吧,尽管我还没有找到任何禁止使用它的东西。(这个问题与平台无关。)为了便于迁移,我想使用在 Python 2.7 和 Python 3.4 上都可用的异步库,并且 Asyncore 应该在这里工作。
我将 RabbitMQ 3.2.4 与 Python 2.7.6 和 pika 0.9.13 一起使用。用户和管理员运行级别没有区别。除了上面更新的警告消息外,记录器在代码中的存在与否与错误无关。在 Linux (Ubuntu 14.04) 和 Windows 7 中也会出现相同的错误,因此这不是平台问题。
因为使用 BlockingConnection 的 pika 性能相当差,所以我想尝试使用 Asyncore 适配器。对于测试床设置来说似乎非常简单(我尝试给它提供凭据,尽管这无关紧要,如果不提供,回调将被剔除......无论哪种方式它都会失败。):
根据教程使用 BlockingConnection - 它可以工作,但吞吐量低:
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
Run Code Online (Sandbox Code Playgroud)
使用 AsyncoreConnection - 我尝试过的所有变体都立即失败:
connection = pika.AsyncoreConnection(pika.ConnectionParameters(host='localhost'))
Run Code Online (Sandbox Code Playgroud)
错误:
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
Run Code Online (Sandbox Code Playgroud) 我正在为 RabbitMQ 上的队列更改一些交换,但是如果队列已经存在,我需要手动删除,那么只有 spring 会使用更改后的交换创建队列。
我们在 spring rabbit 中是否有任何选项可以根据 spring 文件中的队列配置删除队列。
例如:我期待 rabbit:deletequeue name="a" 并再次创建 rabbit:queue name="a"
因此,它将删除队列,然后使用新属性再次创建,以消除在 Rabbit MQ 上手动删除队列的情况。
如果我错了,请纠正我,否则请指导我提供解决方案
斯里尼瓦斯
我有rabbitmq 3.3.5运行和基于amqplib 0.2.1的nodejs项目
问题是一旦交换被断言,它不会在与rabbitmq 的连接关闭后被删除。
如果我们开始这样的例子
var amqp = require('amqplib');
var when = require('when');
amqp.connect('amqp://localhost').then(function(conn) {
return when(conn.createChannel().then(function(ch) {
var ex = 'logs_new';
var ok = ch.assertExchange(ex, 'fanout', {durable: false, autoDelete: true}})
var message = process.argv.slice(2).join(' ') ||
'info: Hello World!';
return ok.then(function() {
ch.publish(ex, '', new Buffer(message));
console.log(" [x] Sent '%s'", message);
return ch.close();
});
})).ensure(function() { conn.close(); });
}).then(null, console.warn);
Run Code Online (Sandbox Code Playgroud)
并运行
#rabbitmqctl list_exchanges
Run Code Online (Sandbox Code Playgroud)
上市交易所...
amq.rabbitmq.log topic
amq.rabbitmq.trace topic
amq.topic topic
logs_new fanout
...done.
Run Code Online (Sandbox Code Playgroud)
尽管与rabbitmq 的连接已关闭,但交换(logs_new)仍然存在。
如果没有任何连接使用,如何告诉 rabbitmq 需要删除交换? …
我的春季启动应用程序抛出连接超时错误,它永远无法连接.我看到的另一个有趣的问题是,它永远不会获取spring app属性中定义的连接超时属性.
org.springframework.amqp.AmqpTimeoutException: java.util.concurrent.TimeoutException
at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:74) ~[spring-rabbit-1.6.7.RELEASE.jar:na]
at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:309) ~[spring-rabbit-1.6.7.RELEASE.jar:na]
at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:577) ~[spring-rabbit-1.6.7.RELEASE.jar:na]
at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:1431) ~[spring-rabbit-1.6.7.RELEASE.jar:na]
at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1412) ~[spring-rabbit-1.6.7.RELEASE.jar:na]
at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1388) ~[spring-rabbit-1.6.7.RELEASE.jar:na]
at org.springframework.amqp.rabbit.core.RabbitAdmin.getQueueProperties(RabbitAdmin.java:336) ~[spring-rabbit-1.6.7.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.redeclareElementsIfNecessary(SimpleMessageListenerContainer.java:1123) [spring-rabbit-1.6.7.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$800(SimpleMessageListenerContainer.java:98) [spring-rabbit-1.6.7.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1329) [spring-rabbit-1.6.7.RELEASE.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]
Caused by: java.util.concurrent.TimeoutException: null
at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:76) ~[amqp-client-3.6.5.jar:na]
at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(BlockingCell.java:110) ~[amqp-client-3.6.5.jar:na]
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36) ~[amqp-client-3.6.5.jar:na]
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:366) ~[amqp-client-3.6.5.jar:na]
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:292) ~[amqp-client-3.6.5.jar:na]
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:824) ~[amqp-client-3.6.5.jar:na]
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:736) ~[amqp-client-3.6.5.jar:na]
at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:293) ~[spring-rabbit-1.6.7.RELEASE.jar:na]
... 9 common frames omitted
Run Code Online (Sandbox Code Playgroud)
这是我的java配置,
@Configuration
@EnableRabbit
public class RabbitConfig {
private final String …Run Code Online (Sandbox Code Playgroud) 因此,我刚刚安装了最新版本的Rabbitmq,并且一直在尝试使其正常运行。该服务器正在运行,为了确保它是一个一致的问题,我已经重新启动了它一次。
如果telnet localhost 5672我得到
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)
如您所见,连接被接受,但是rabbitmq不接受任何输入。连接将立即关闭。日志中没有显示更多信息。
rabbitmqctl 可以正常工作。
它在Linux / Ubuntu的Windows子系统上运行。对于本地开发人员环境,我没有其他选择,因为我使用的工作计算机非常紧。
嗨,我发现如何创建一个运行rabbitmq容器的docker文件非常混乱,我可以在其中公开端口,以便我可以通过localhost和端口号导航到管理控制台.
我看到有人提供了这个dockerfile示例,但不确定如何运行它?
version: "3"
services:
rabbitmq:
image: "rabbitmq:3-management"
ports:
- "5672:5672"
- "15672:15672"
volumes:
- "rabbitmq_data:/data"
volumes:
rabbitmq_data:
Run Code Online (Sandbox Code Playgroud)
我有兔子在当地工作很好,但每个人都告诉我,码头工人是未来,按照这个速度,我不明白.
以上看起来像是运行rabbitmq容器的有效方法吗?我在哪里可以找到一个完全可以理解的例子?
非常感谢
安德鲁
我正在使用Rabbitmq来完成一些从我的Rabbit服务器到我的使用者的任务。我注意到,当我进行一些相当长时间的测试(20分钟以上)时,我的消费者将在完成任务后与生产者失去联系。在我的兔子日志中,我看到了错误
closing AMQP connection <0.14009.27> (192.168.101.2:64855 ->
192.168.101.3:5672):
missed heartbeats from client, timeout: 60s
Run Code Online (Sandbox Code Playgroud)
另外,我从pika收到此错误
pika.exceptions.ConnectionClosed: (-1, "error(10054, 'An existing connection was forcibly closed by the remote host')")
Run Code Online (Sandbox Code Playgroud)
我假设这是由于此处的代码以及心跳与长时间阻塞连接时间的冲突所致。
self.connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.101.2', 5672, 'user', credentials))
self.channel = self.connection.channel()
self.channel.queue_declare(queue=self.tool,
arguments={'x-message-ttl': 1000,
"x-dead-letter-exchange": "dlx",
"x-dead-letter-routing-key": "dl",
'durable': True})
Run Code Online (Sandbox Code Playgroud)
是否有适当的方法来增加心跳时间,或者我如何将其完全关闭(明智的做法)?就像我说的那样,超过20分钟的测试似乎会导致闭合连接错误,但是从1-15分钟的标记开始,我已经进行了大量测试,一切正常,消费者客户端继续等待消息传递。
Micronaut 1.0.0刚刚发布(2018年10月25日)及其对RabbitMQ的文档,它似乎并没有说如何实际消耗或发布消息.它只是说您可以使用以下方法创建项目支持RabbitMQ:
mn create-app my-app --features rabbitmq
Run Code Online (Sandbox Code Playgroud)
但是一旦完成,唯一感兴趣的就是Application类:
import io.micronaut.runtime.Micronaut;
public class Application {
public static void main(String[] args) {
Micronaut.run(Application.class);
}
}
Run Code Online (Sandbox Code Playgroud)
和一些yaml配置:
---
micronaut:
application:
name: my-app
---
rabbitmq:
uri: amqp://user:pass@host:10000/vhost
requestedFrameMax: 10
requestedChannelMax: 10
connectionTimeout: 5000
Run Code Online (Sandbox Code Playgroud)
但是,如何使用Micronaut实际开始使用RabbitMQ消费和发布消息?
masstransit中的ConcurrencyLimit和PrefetchCount有什么区别?以及针对它们的优化配置。