问题标签 [spring-amqp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8102 浏览

java - 从 Java/Spring 中检索 RabbitMQ 队列中未确认消息的数量

有没有办法返回未确认的消息数量?

我正在使用此代码来获取队列中的消息数:

但我也想知道未确认消息的数量。

我已经看到 RabbitMQ 管理工具包含该信息(对于每个队列,它给出了就绪/未确认和总消息的数量),我想一定有一种方法可以从 Java/Spring 中检索这些信息。

谢谢

更新

好的,似乎没有办法以编程方式完成,因为配置/队列列表不是 AMPQ 的一部分。

可以启用管理插件并查询有关队列的 REST Web 服务(除其他外)。更多信息在这里:

http://www.rabbitmq.com/management.html

0 投票
1 回答
1831 浏览

rabbitmq - RabbitMQ 的“receiveAndConvert”抛出 ClassCastException

我是 RabbitMQ 的新手,我正在尝试“ receiveAndConvert”到我的自定义类型:Person.java.

这是我的制片人

这是我的消费者

我的Person.java 只是一个带有名称和年龄实例变量的 POJO。

我得到一个ClassCastException如下:

请注意,Producer 和 Consumer 类位于两个不同的项目中,我已将 Person.java 类复制/粘贴到 Consumer 项目中。

我的配置如下:

0 投票
2 回答
1684 浏览

python - 使用 python 生成 amqp 消息并使用 java 使用相同的消息

我正在尝试从 python 生成一条 amqp 消息并使用来自 java/spring 的相同消息。

这是我的生产者代码(python):

这是我的消费者代码(java):

这是 Person 的 java 类:

和相应的python类:

(位于trc/suivi/amqp目录结构中)

我得到一个类转换异常。我很确定这与包/模块名称或一些序列化问题有关......

编辑:我现在正在使用 JSon,我在 java 反序列化时得到了这个:

0 投票
2 回答
2774 浏览

java - amqp 和骆驼错误:路由没有输入

我对骆驼的溃败遇到了一些问题。这是我的配置文件,很简单:

在这种情况下,我使用的是 RabbitMQ,hello 是队列名称。

运行它,我收到以下错误消息:

任何想法?我在哪里可以获得 Camel + RabbitMQ 的示例或教程?

- - 更新 - -

按照以下评论的建议,我修复了配置,并且已经完成了一小步。现在它似乎能够连接到队列但是,如果我尝试写我得到“camelContext must be specified”异常

谢谢,
安德里亚

0 投票
1 回答
234 浏览

spring - HTTP请求完成后如何正确确认AMQP消息

我有一个控制器方法使用来自 AMQP 队列的消息 - 但我不想确认这些消息,直到我尽可能确定发出 http 请求的客户端获得了数据(这样在 http 请求的情况下不会丢失数据离开控制器方法后会失败)。

到目前为止,我能够找到的是,您可以使用 Spring 拦截器来实现“afterCompletion”,它将在请求成功完成后调用。但这感觉有点矫枉过正?

0 投票
2 回答
10226 浏览

java - RabbitMQ 挂起队列消费

保持持久队列及其绑定但暂停其消费者的最佳方法是什么?

用例是:如果我们不断收到一堆我们无法处理的消息(例如数据库已关闭或架构问题),但希望继续聚合到队列。即允许发布但暂停消费。

我可以想到三个解决方案:

  1. 我可以让绑定到队列的所有消费者不断拒绝消息并重新排队,但这有点浪费资源,更不用说我已经以编程方式执行了上述逻辑。
  2. 我可以呼吁basic.cancelConsumer所有消费者(见下文)
  3. 或者就而言,我想我可以调用shutdown所有绑定到队列的SimpleMessageListenerContainers 。

#1我们已经在做,因为消息被拒绝了。问题是这最终就像一个无限的while循环失败,如果你记录这个失败,就会浪费更多的资源。

#3似乎很理想,但我必须了解所有消息侦听器,然后通知它们关闭。我想我可以使用扇出交换来通知队列需要暂停。我觉得 RabbitMQ 必须为这个逻辑内置一些东西。另一个问题是您可以将多个队列绑定到一个消息容器(并非所有队列都可能需要暂停)。

因为#2我知道我可以用它来取消消费者consumerTag,但问题(假设这是执行上述操作的正确方法)是我从哪里获得consumerTags 到队列的列表?

0 投票
1 回答
444 浏览

java - Drools 5.1.1 意外的 Accumulate 和 Collect 行为

我正在使用 Spring AMQP 从 RabbitMQ 读取消息。读取消息后,将其反序列化为一个标头(父)对象和多个详细信息(子)对象。然后将这些事实插入 Drools 无状态规则会话。最后,更新的事实被插入到数据库中。

我有几个规则将使用收集或累积函数聚合详细事实。这是一个例子。

如果我在 jUnit 中运行一次(读取一条消息),则 TotalDuration 计算正确。如果我在 tomcat 中运行它(连续读取消息), TotalDuration 的值不正确,并且在每次传递后都会增加(消息被抓取,规则运行,事实持续存在,重复),我不知道为什么。

任何人都可以阐明这种行为吗?

0 投票
1 回答
6032 浏览

rabbitmq - Spring rabbit 不允许在缓存连接工厂配置中覆盖默认值:1.1.4 版

我尝试使用 spring amqp 应用程序将 JSON 数据作为消息发送给消费者(用 Ruby 编写)。

我尝试的任何设置都会出现连接重置错误

注意:我删除了默认的来宾用户,并添加了对默认虚拟主机具有相同权限的管理员。

这是配置:

在我的制作人课上

我得到一个

com.rabbitmq.client.PossibleAuthenticationFailureException: 可能是认证失败异常引起

堆栈跟踪显示连接重置

消息消费者如下

更新:似乎更新的用户名和密码设置没有传播,兔子日志显示我的应用程序仍然使用来宾

0 投票
1 回答
65 浏览

spring - 如何让编译器限制我使用任何 RabbitMQ AMQP 扩展?

我计划在我的项目中使用 RabbitMQ 作为 AMQP 实现。但我想限制自己仅使用 AMQP 规范,而不使用任何RabbitMQ 对 AMQP 的扩展

有没有办法可以将此“规范安全”检查留给编译器?例如:如果有一个仅限 AMQP 规范的 RabbitMQ 库,那么通过只包含这个库,我可以让编译器在每次尝试使用扩展时抱怨(因为它找不到那个的定义/实现仅 AMQP 规范库中的扩展)。

我想这样做,以便如果我尝试切换到不同的 AMQP 实现,它会更容易!(我打算使用 Spring Integration 从底层 AMQP 实现中抽象出来)。

0 投票
2 回答
1408 浏览

java - 兔子预取

我将 spring amqp 与 rabbitmq 一起使用。我想在没有预取的情况下收到一条消息。我配置了

如何禁用预取并仅获取一条消息/