在微服务中重新传递 JMS 消息

Redelivery of JMS message in microserices

我想知道微服务中 JMS 的重新交付。

例如,如果我有一个微服务系统。我有 2 个用户服务实例。并在用户服务的目的地上有一个监听器。这意味着我有 2 个听众。监听器是这样的:

@JmsListener(destination = "order:new", containerFactory = "orderFactory")
@Transactional
public void create(OrderDTO orderDTO) {
    Order order = new Order(orderDTO);
    orderRepository.save(order);
    jmsTemplate.convertAndSend("order:need_to_pay", order);
}

所以我的问题是,一条消息将传递多少次。如果这个函数出现错误,消息将被重新传递。但我有 2 个服务实例。这条消息将发送到哪个平台?

它不是规范的一部分;交付多少次取决于代理配置;许多代理可以配置为在尝试一定次数后将消息发送到死信队列。

不能保证重新传送到同一个实例。