我们有一个使用RabbitMQ的Spring Java应用程序,这是场景:
public void sendMessage(final StagingMessage stagingMessage,最终Long时间戳,最终String国家){
final List<TransformedMessage> messages = processMessageList(stagingMessage);
messages.parallelStream().forEach(message -> {
final TransformedMessage transformedMessage = buildMessage(timestamp, ApiConstants.POST_METHOD, country);
productAssortmentMessageSender.sendQueue(country, transformedMessage);
});
}
欢迎堆栈溢出!
当问这样的问题时,您应该始终显示相关的代码和配置Bean。
我假设您正在使用RoutingConnectionFactory
。
它使用ThreadLocal
存储查找关键字,因此发送必须在设置关键字的同一线程上进行。
通常,您绝对不应该在侦听器中成为异步对象;您冒着丢失消息的风险。要增加并发性,请使用容器上的并发属性。