标签: rabbitmq

RabbitMQ cluster_partition_handling“pause_minority”无法识别

我的 RabbitMQ 集群有一个奇怪的问题。我正在运行一个带有 RabbitMQ 3.6.5 的 3 节点集群。当我模拟其中一个节点的连接丢失(“我从后面拉出电缆”)时,我在日志文件中看到发生了网络分区。然而,它接着说:

cluster_partition_handling "pause_minority" unrecognised, assuming 'ignore'

最初,我将设置设置为“pause-minority”而不是 pause_minority 它在文档中的说法。然而,改变它并没有帮助。我尝试了不同的变体并四处寻找示例,但找不到任何东西。

{cluster_partition_handling, pause_minority},

{cluster_partition_handling, "pause_minority"},

{cluster_partition_handling,pause_minority},

这些都没有奏效。我一直收到同样的错误。

但是,如果我重新启动节点,它将正常工作。队列获得一个新的主节点,当节点返回时,它会与其他节点同步。

为什么 RabbitMQ 不能识别我的设置,我该如何解决?

rabbitmq

1
推荐指数
1
解决办法
2187
查看次数

将消息返回到rabbitmq中的队列末尾

我有交换和队列。生产者不需要消费确认,但在某些情况下,由于缺乏其他数据,消费者可能无法在当前时刻处理消息。因此,我想将这些消息返回到队列末尾。这该怎么做?还是在我拒绝消息时自动完成?

流动:

  • Message1 被消耗并在数据库中创建一些记录。
  • Message2 被消耗并检查数据库中是否有记录,如果有,则更新记录。如果数据库中没有记录,则将消息返回到队列末尾。

所以存在消息排序问题,在一般情况下,我按顺序接收消息,因为大多数组件正确传递消息。我想解决潜在的情况,当 Message1 的 Producer 由于负载过重或其他原因无法立即将消息进行交换时。在这种情况下,Message2 将首先被消费,但数据库中将没有足够的信息来处理它。我希望此消息返回到队列,但请确保此 Message2 将转到队列的尾部。如果它会继续下去,如果我只使用一个队列,我就会陷入无限循环。

附带问题是,是否可以跟踪消费者尝试处理消息但返回消息的次数。如果有可能像我之前描述的那样将消息放到队列的尾部,但是由于某种原因 Message1 的生产者死了,并且没有 Message1,我想让 Message2 在重试几次或一段时间后死掉。

amqp rabbitmq spring-rabbit

1
推荐指数
1
解决办法
3967
查看次数

为什么我需要在创建卷时将主机名添加到 docker

我正在创建一个带有 -v 选项的 rabbitmq 容器来添加一个卷,奇怪的是,如果我不添加 --hostname 容器将无法获取卷的信息,例如:

我创建了一个这样的卷:

docker volume create --name rabbit
Run Code Online (Sandbox Code Playgroud)

后来我验证该卷已创建

docker volume ls
Run Code Online (Sandbox Code Playgroud)

然后我像这样创建容器:

docker run --name rabbitprueba -P -p 55555:15672 -d -v rabbit:/var/lib/rabbitmq rabbitmq:3.6.10-management
Run Code Online (Sandbox Code Playgroud)

我输入 localhost:55555 并输入用户名和密码,然后创建一个简单的队列,返回我的机器并停止并移除容器:

docker stop rabbitprueba
docker rm rabbitprueba
Run Code Online (Sandbox Code Playgroud)

当我运行相同的命令时:

docker run --name rabbitprueba -P -p 55555:15672 -d -v rabbit:/var/lib/rabbitmq rabbitmq:3.6.10-management
Run Code Online (Sandbox Code Playgroud)

我创建的队列消失了,但如果我重复相同的步骤(停止容器并删除它)并将 --hostname 添加到命令中,队列不会被删除:

docker run --hostname rabbitprueba --name rabbitprueba -P -p 55555:15672 -d -v rabbit:/var/lib/rabbitmq rabbitmq:3.6.10-management
Run Code Online (Sandbox Code Playgroud)

为什么会这样?,我做错了什么吗?,

rabbitmq docker

1
推荐指数
1
解决办法
657
查看次数

Apache Camel:RabbitMQ 将消息重新排队到同一队列会导致消息重复

我正在做类似的事情

  from(rabbitmq:pollingQueue?prefetchSize=1&concurrentConsumer=10)
        .process(pollingRequestStatus) // check status of the request, if not ready, requeue = true
        .Choice
           .when(requeue == true) // request not ready
           .to(rabbitmq:pollingQueue)//back to the same queue
        .endChoice
        .otherwise
        .to(proceedToSomethingElse)
        .endChoice.end;
Run Code Online (Sandbox Code Playgroud)

当重新排队发生时,消息会重复,这是将消息发回同一队列时的预期行为吗?

我也按照建议尝试了以下类似的东西,但它不起作用,该消息似乎只是被消耗掉了,不会重新排队

from(rabbitmq:pollingQueue? prefetchSize=1&concurrentConsumer=10)
     .onException(NotReadyException.class)
     .handled(true)
     .setHeader(RabbitMQConstants.REQUEUE, constant(true))
     .end() 
     .process(pollingRequestStatus) // check status of the request, if not ready, throw NotReadyEception
        .to(proceedToSomethingElse);
Run Code Online (Sandbox Code Playgroud)

我尝试过的另外两种方法至少不会创建重复项,

1.) 在 NotReadyExeption 上,将消息发送回 pollingQueue

from(rabbitmq:pollingQueue? prefetchSize=1&concurrentConsumer=10)
    .onException(NotReadyException.class)
    .to(rabbitmq:pollingQueue)
    //.delay(constant(8000)) //not sure why it throws error if i set delay
    .end
    .process(pollingRequestStatus); // check status …
Run Code Online (Sandbox Code Playgroud)

duplicates apache-camel rabbitmq

1
推荐指数
1
解决办法
1808
查看次数

如何使用 RabbitTemplate 设置每条消息的 TTL?

我正在将 spring-boot 与 rabbitMQ 一起使用,我想知道是否可以使用 RabbitTemplate 使用每条消息 TTL。到目前为止我有:

@Autowired
   private RabbitTemplate rabbit;

   public void produce() {

      rabbit.convertAndSend("My.Queue", routingKey, message);
   }
Run Code Online (Sandbox Code Playgroud)

java spring rabbitmq spring-boot

1
推荐指数
1
解决办法
4102
查看次数

无法在本机应用程序中连接到rabbitmq 服务器

我正在尝试将rabbitmq 集成到本机应用程序上

参考这个库:https : //www.npmjs.com/package/react-native-rabbitmq

我尝试使用适当的配置属性创建一个 Connection 对象。但是当我试图检查let connection = new Connection(config);我收到以下结果时:

Connection {rabbitmqconnection: Object, callbacks: Object, connected: false}在连接对象中。如您所见,它给出了connected: false

我已经提到在节点端创建 rabbit mq 服务器:https : //www.rabbitmq.com/tutorials/tutorial-one-javascript.html来创建一个正常工作的节点 rabbit mq 服务器。现在我需要在客户端接收消息

我确信配置属性和rabbitmq 服务器运行正常,因为使用相同的我可以从单独的节点服务器连接到rabbit mq。试图在这两个添加记录器connection.on('error')和中connection.on('connected'),但没有得到任何日志

无法理解问题出在哪里。有人可以帮助或建议一个更好的图书馆吗?需要在 react-native 上集成 RabbitMQ

const config = {
        host: '192.0.0.1', //dummy values
        port: 5672,
        username: 'username',
        password: 'password',
        virtualhost: 'vhost'
    };
    const connection = new Connection(config);
    console.log('connection config changed');
    console.log(connection);
    connection.on('error', (event) => {
            console.log('error');
            console.log(event);
    }); …
Run Code Online (Sandbox Code Playgroud)

rabbitmq react-native

1
推荐指数
1
解决办法
2101
查看次数

RabbitMQ 标头交换,其中 X-Match 等于任何

有人可以解释为什么会这样吗?

我创建了一个标头交换并将其绑定到三个具有不同参数的队列,如下所示:

在此处输入图片说明

然后我尝试发布一条消息,其中任何格式为 pdf 的队列都会收到它,如下所示:

在此处输入图片说明

但是交换似乎无法将其路由到正确的队列,因为我收到以下消息:

在此处输入图片说明

由于我找不到和我有同样问题的人,这可能是我在这里做错了

请注意,例如,如果我发送x-match:allformat: pdftype: report,队列test-queue-A正常获取

rabbitmq rabbitmq-exchange

1
推荐指数
1
解决办法
2240
查看次数

如何理解rabbitmqctl命令的输出

$rabbitmqctl list_queues

Timeout: 60.0 seconds ...
Listing queues for vhost / ...
privateTransactionQ 2
amq.gen-o9dl3Zj7HxS50gkTC2xbBQ  0
task_queue  0
Run Code Online (Sandbox Code Playgroud)

rabbitmqctl 的输出如下所示。我无法弄清楚每列的含义。我怎样才能看到每一列的含义?

amqp rabbitmq node-amqplib

1
推荐指数
1
解决办法
2060
查看次数

如何在rabbitmq中获取用户的密码?

如何从 CLI获取 Rabbitmq 中现有用户的密码?我通过 CLI 命令“ sudo rabbitmqctl list_users ”获得了用户名,输出如下:

列出用户 ... 来宾 [管理员] openstack []

我想知道“ openstack ”用户密码。

rabbitmq openstack

1
推荐指数
1
解决办法
7284
查看次数

使用 Jasypt 加密数据库密码导致 NoClassDefFoundError

我一直在关注这个URL,在 Spring 启动应用程序中使用 Jasypt 加密我的数据库密码。从那里,我找到了我试图遵循第一种和第二种方法的这个 Github网址。但是当我尝试运行我的应用程序时,我在应用程序启动时遇到异常。

java.lang.NoClassDefFoundError: org/springframework/boot/context/properties/bind/PlaceholdersResolver
at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_181]
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_181]
at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_181]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613) ~[spring-core-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524) ~[spring-core-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510) ~[spring-core-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:570) ~[spring-core-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:697) ~[spring-beans-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:640) ~[spring-beans-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:609) ~[spring-beans-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1484) ~[spring-beans-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:425) ~[spring-beans-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:395) ~[spring-beans-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration$BeanPostProcessorsRegistrar.registerSyntheticBeanIfMissing(EmbeddedServletContainerAutoConfiguration.java:148) ~[spring-boot-autoconfigure-1.5.3.RELEASE.jar!/:1.5.3.RELEASE]
at org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration$BeanPostProcessorsRegistrar.registerBeanDefinitions(EmbeddedServletContainerAutoConfiguration.java:137) ~[spring-boot-autoconfigure-1.5.3.RELEASE.jar!/:1.5.3.RELEASE]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:354) ~[spring-context-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:143) ~[spring-context-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:116) ~[spring-context-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:320) ~[spring-context-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228) ~[spring-context-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:270) ~[spring-context-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93) ~[spring-context-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
at …
Run Code Online (Sandbox Code Playgroud)

spring rabbitmq jasypt spring-boot spring-boot-maven-plugin

1
推荐指数
1
解决办法
1843
查看次数