问题标签 [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 投票
1 回答
6684 浏览

rabbitmq - Spring 与 Rabbit AMQP 集成,用于“客户端发送消息 -> 服务器接收并在返回队列上返回消息 -> 客户端获取相关消息”

我可以使用 Rabbit Java API 编写一个 java 程序,执行以下操作:

  1. 客户端通过具有相关 ID 的 Rabbit MQ 交换/队列发送消息(例如 UUID -“348a07f5-8342-45ed-b40b-d44bfd9c4dde”)。

  2. 服务器收到消息。

  3. 服务器通过 Rabbit MQ 交换/队列发送具有相同相关 ID -“348a07f5-8342-45ed-b40b-d44bfd9c4dde”的响应消息。

  4. 客户端仅在与 1 相同的线程中收到相关消息。

下面是使用 Rabbit API 的 Send.java 和 Recv.java。我需要帮助来将此示例转换为使用 Spring AMQP 集成,尤其是第 4 步中的接收部分。我正在寻找类似接收方法的东西,它可以使用相关 ID 过滤消息。

发送.java:

Recv.java

运行 gary 提供的 Java 配置后,我试图将配置移动到 XML 格式以供服务器端添加侦听器。下面是 XML 配置:

服务器.xml

SpringReceive.java

0 投票
2 回答
58 浏览

java - 如何在spring amqp中为同一队列在一台服务器上设置一定数量的监听器,而在另一台服务器上没有监听器,因为我们不能设置0并发?

我在回复队列上设置了侦听器,我希望那些只在主服务器上(消息从那里排队),其他服务器应该没有回复队列的侦听器。他们应该有所有其他队列的侦听器。

Spring AMQP 不允许将侦听器并发设置为 0。所以我不能设置 0 个侦听器来回复从属服务器上的队列。

如何在从属服务器上为回复队列设置 0 并发?

0 投票
1 回答
1634 浏览

rabbitmq - 响应消息 ClassCastException: Cannot cast java.util.LinkedHashMap (id=173) to com.sw.Employee

当我尝试使用 Spring AMQP 在生产者端发送 LinkedHashMap 作为请求时,无法在侦听器中投射异常。

要求 -

回应——

消费者端异常:- ClassCastException:无法将 java.util.LinkedHashMap (id=173) 转换为 com.sw.Employee

日志跟踪 -

谢谢, 塞卡

0 投票
1 回答
157 浏览

spring-amqp - Spring AMQP 按时间同步到异步

RabbitMQ Spring AMQP 同步到异步转换

如果请求运行时间过长,我需要将同步消息调用转换为异步。如果有办法通过为 RabbitMQ 使用 Spring AMQP 客户端来实现这一点?谢谢。

0 投票
1 回答
2440 浏览

java - 如何在 spring amqp 中设置 basicQos 以实现公平调度?

这是我当前的 spring amqp 配置

这是我的交换、队列、侦听器、replyQueues、replyHandlers 配置

我已经在 6 个不同的服务器上进行了设置,并且只对来自主服务器的消息进行排队。其他服务器只处理消息。所有服务器都运行由并发设置的相同数量的侦听器。

问题是,消息需要不同的时间来处理。有些消息需要很长时间。因此,目前一些服务器不会从队列中获取消息,即使这些服务器上的所有侦听器都已完成处理那里的消息。

我可以看到待处理队列中的待处理消息,并且一些服务器处于空闲状态。我希望这些服务器在其他服务器忙于处理它们的消息时接收剩余的消息。

我是否需要按照教程http://www.rabbitmq.com/tutorials/tutorial-two-java.html (Fair Dispatch)中的说明设置 basic_Quos ?

还是 spring ampq 的默认设置?如果不是我该怎么做?

0 投票
1 回答
3103 浏览

java - 如何使用MessageListenerAdapter在spring amqp中使用带有消息类型参数的pojo?

我低于异常

这就是我发送消息的方式

这是我的侦听器容器配置

这是我的pojo,

我不想实现任何接口,因为我在同一个 pojo 中有许多这样的方法,我想将它们用作侦听器。

我看过MessageListenerAdapter的实现代码,https://github.com/spring-projects/spring-amqp/blob/master/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapter .java和文档 http://docs.spring.io/spring-amqp/docs/1.2.1.RELEASE/api/org/springframework/amqp/rabbit/listener/adapter/MessageListenerAdapter.html

这里给出了这个例子,它接受 Message 参数

我的 pojo 是相似的,为什么我得到这个异常?我尝试删除 setContentType 但仍然遇到相同的异常?

0 投票
1 回答
4145 浏览

rabbitmq - 如何使用 Spring AMQP 从 RabbitMQ 接收相关 ID 的消息

我浏览了 RabbitTemplate 的 API。它只提供从队列中获取消息的接收方法。但是,无法获取具有特定相关 ID 的消息。你能帮我理解我在这里缺少什么吗?

目前,我正在使用来自 ActiveMQ 的 JMS API 使用以下代码接收消息,该代码使用消息选择器 createConsumer。希望对带有 RabbitMQ 的 Spring AMQP 做同样的事情:

0 投票
1 回答
1769 浏览

spring-amqp - 使用 Spring AMQP 和 RabbitMQ over SSL 的示例/文档

我想了解通过 SSL 将 spring AMQP 用于 RabbitMQ 的文档/API/示例。

0 投票
2 回答
1695 浏览

java - 如何同时运行共享相同读取器和写入器实例的春季批处理作业?

这就是我现有系统的工作方式。

我使用spring批处理编写了批处理,它将消息异步写入队列。编写者一旦将一定数量的消息发送到队列,就会开始监听 LINKED_BLOCKING_QUEUE 以获得相同数量的消息。

我有使用消息并处理它们的 spring amqp 侦听器。一旦处理完毕,消费者就会在回复队列中回复。有侦听器侦听回复队列以检查消息是否成功处理。回复侦听器检索响应并将其添加到 LINKED_BLOCKING_QUEUE,然后由 writer 获取。一旦作者获取所有响应完成批处理。如果有异常,它将停止批处理。

这是我的工作配置

这是我的作家代码,

听众pojo

这是回复处理程序

现在,问题是,我想同时运行具有唯一批次 ID 的多个批次,这将为不同批次处理不同的数据(相同类型)。

由于将来批次的数量会增加,我不想继续为每个批次添加单独的队列和回复队列。

而且,为了同时处理消息,我有多个侦听器(使用侦听器并发设置)侦听队列。如果我为不同的批次添加不同的队列,运行的监听器数量将会增加,这可能会使服务器过载(CPU/内存使用率很高)。

因此,我不想为要添加的每种类型的批次复制相同的基础架构。我想使用相同的基础设施,只是特定批次的编写者应该只得到它的响应,而不是同时运行的其他批次的响应。

我们可以使用相同的项目编写器实例,这些实例对并行运行的多个批处理实例使用相同的阻塞队列实例吗?

0 投票
1 回答
1338 浏览

java - 如何在 spring amqp 的运行时添加/删除消费者?

我在每台服务器上运行了一定数量的侦听器,这等于侦听器并发。下面是配置

有没有办法在我的作业运行时在运行时添加/删除任何服务器上的侦听器数量,而无需更改此设置并重新部署应用程序?

可能是一些命令行工具在运行时添加/删除消费者数量?