2
我試圖與交易渠道從配置AMQP春一SimpleMessageListenerContainer一樣動態增加消費者的需求。問題是,我沒有看到消費者在我有一個渠道交易時被動態添加。需要明確的是,這並不能動態地添加用戶負載下:SimpleMessageListenerContainer一樣ChannelTransacted和MaxConcurrentConsumers
container.setMaxConcurrentConsumers(5);
container.setChannelTransacted(true);
container.setTransactionManager(rabbitTransactionManager);
但這:
container.setMaxConcurrentConsumers(5);
//container.setChannelTransacted(true);
//container.setTransactionManager(rabbitTransactionManager);
我的問題是:
- 爲什麼沒有被添加消費者動態?
- 有沒有解決方法來同時引導通道交易和動態消費者?
我打開了一個[JIRA問題](https://jira.spring.io/browse/AMQP-498)。 –
感謝您解答此問題。我的團隊正在使用他們,因爲我們認爲他們有助於緩解信息丟失。你有建議更好的策略嗎? –
您不需要消費方的交易來避免消息丟失;在消費者方面,交易只適用於確認,而不是交付消息本身。即使沒有事務,也不會有丟失消息的危險,因爲只有在收到確認時纔會將它們從隊列中刪除(即,使用AUTO ackmode時 - 默認 - 如果您使用AckMode NONE - 稱爲兔子說autoAck)。您可以閱讀[關於RabbitMQ文檔中的所有事務](https://www.rabbitmq.com/semantics.html)。 –