问题标签 [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.
java - 从 Java/Spring 中检索 RabbitMQ 队列中未确认消息的数量
有没有办法返回未确认的消息数量?
我正在使用此代码来获取队列中的消息数:
但我也想知道未确认消息的数量。
我已经看到 RabbitMQ 管理工具包含该信息(对于每个队列,它给出了就绪/未确认和总消息的数量),我想一定有一种方法可以从 Java/Spring 中检索这些信息。
谢谢
更新
好的,似乎没有办法以编程方式完成,因为配置/队列列表不是 AMPQ 的一部分。
可以启用管理插件并查询有关队列的 REST Web 服务(除其他外)。更多信息在这里:
rabbitmq - RabbitMQ 的“receiveAndConvert”抛出 ClassCastException
我是 RabbitMQ 的新手,我正在尝试“ receiveAndConvert
”到我的自定义类型:Person.java
.
这是我的制片人:
这是我的消费者:
我的Person.java 只是一个带有名称和年龄实例变量的 POJO。
我得到一个ClassCastException如下:
请注意,Producer 和 Consumer 类位于两个不同的项目中,我已将 Person.java 类复制/粘贴到 Consumer 项目中。
我的配置如下:
python - 使用 python 生成 amqp 消息并使用 java 使用相同的消息
我正在尝试从 python 生成一条 amqp 消息并使用来自 java/spring 的相同消息。
这是我的生产者代码(python):
这是我的消费者代码(java):
这是 Person 的 java 类:
和相应的python类:
(位于trc/suivi/amqp目录结构中)
我得到一个类转换异常。我很确定这与包/模块名称或一些序列化问题有关......
编辑:我现在正在使用 JSon,我在 java 反序列化时得到了这个:
java - amqp 和骆驼错误:路由没有输入
我对骆驼的溃败遇到了一些问题。这是我的配置文件,很简单:
在这种情况下,我使用的是 RabbitMQ,hello 是队列名称。
运行它,我收到以下错误消息:
任何想法?我在哪里可以获得 Camel + RabbitMQ 的示例或教程?
- - 更新 - -
按照以下评论的建议,我修复了配置,并且已经完成了一小步。现在它似乎能够连接到队列但是,如果我尝试写我得到“camelContext must be specified”异常
谢谢,
安德里亚
spring - HTTP请求完成后如何正确确认AMQP消息
我有一个控制器方法使用来自 AMQP 队列的消息 - 但我不想确认这些消息,直到我尽可能确定发出 http 请求的客户端获得了数据(这样在 http 请求的情况下不会丢失数据离开控制器方法后会失败)。
到目前为止,我能够找到的是,您可以使用 Spring 拦截器来实现“afterCompletion”,它将在请求成功完成后调用。但这感觉有点矫枉过正?
java - RabbitMQ 挂起队列消费
保持持久队列及其绑定但暂停其消费者的最佳方法是什么?
用例是:如果我们不断收到一堆我们无法处理的消息(例如数据库已关闭或架构问题),但希望继续聚合到队列。即允许发布但暂停消费。
我可以想到三个解决方案:
- 我可以让绑定到队列的所有消费者不断拒绝消息并重新排队,但这有点浪费资源,更不用说我已经以编程方式执行了上述逻辑。
- 我可以呼吁
basic.cancelConsumer
所有消费者(见下文) - 或者就spring-amqp而言,我想我可以调用
shutdown
所有绑定到队列的SimpleMessageListenerContainers 。
#1
我们已经在做,因为消息被拒绝了。问题是这最终就像一个无限的while循环失败,如果你记录这个失败,就会浪费更多的资源。
#3
似乎很理想,但我必须了解所有消息侦听器,然后通知它们关闭。我想我可以使用扇出交换来通知队列需要暂停。我觉得 RabbitMQ 必须为这个逻辑内置一些东西。另一个问题是您可以将多个队列绑定到一个消息容器(并非所有队列都可能需要暂停)。
因为#2
我知道我可以用它来取消消费者consumerTag
,但问题(假设这是执行上述操作的正确方法)是我从哪里获得consumerTag
s 到队列的列表?
java - Drools 5.1.1 意外的 Accumulate 和 Collect 行为
我正在使用 Spring AMQP 从 RabbitMQ 读取消息。读取消息后,将其反序列化为一个标头(父)对象和多个详细信息(子)对象。然后将这些事实插入 Drools 无状态规则会话。最后,更新的事实被插入到数据库中。
我有几个规则将使用收集或累积函数聚合详细事实。这是一个例子。
如果我在 jUnit 中运行一次(读取一条消息),则 TotalDuration 计算正确。如果我在 tomcat 中运行它(连续读取消息), TotalDuration 的值不正确,并且在每次传递后都会增加(消息被抓取,规则运行,事实持续存在,重复),我不知道为什么。
任何人都可以阐明这种行为吗?
rabbitmq - Spring rabbit 不允许在缓存连接工厂配置中覆盖默认值:1.1.4 版
我尝试使用 spring amqp 应用程序将 JSON 数据作为消息发送给消费者(用 Ruby 编写)。
我尝试的任何设置都会出现连接重置错误
注意:我删除了默认的来宾用户,并添加了对默认虚拟主机具有相同权限的管理员。
这是配置:
在我的制作人课上
我得到一个
com.rabbitmq.client.PossibleAuthenticationFailureException: 可能是认证失败异常引起
堆栈跟踪显示连接重置
消息消费者如下
更新:似乎更新的用户名和密码设置没有传播,兔子日志显示我的应用程序仍然使用来宾
spring - 如何让编译器限制我使用任何 RabbitMQ AMQP 扩展?
我计划在我的项目中使用 RabbitMQ 作为 AMQP 实现。但我想限制自己仅使用 AMQP 规范,而不使用任何RabbitMQ 对 AMQP 的扩展。
有没有办法可以将此“规范安全”检查留给编译器?例如:如果有一个仅限 AMQP 规范的 RabbitMQ 库,那么通过只包含这个库,我可以让编译器在每次尝试使用扩展时抱怨(因为它找不到那个的定义/实现仅 AMQP 规范库中的扩展)。
我想这样做,以便如果我尝试切换到不同的 AMQP 实现,它会更容易!(我打算使用 Spring Integration 从底层 AMQP 实现中抽象出来)。
java - 兔子预取
我将 spring amqp 与 rabbitmq 一起使用。我想在没有预取的情况下收到一条消息。我配置了
如何禁用预取并仅获取一条消息/