這是我的 Spring 應用程式的兔子 yml.config:
event.rabbit:
host: {{ params.app_properties.mq_host }}
port: {{ params.app_properties.mq_port }}
username: ${mq_username}
password: ${mq_password}
virtual-host: {{ params.app_properties.mq_vhost }}
exchange.name: {{ params.app_properties.mq_exchange }}
queue.name: {{ params.app_properties.event_rabbit_queue_name}}
是否可以讓兔子聽幾個主機的幾個佇列?
uj5u.com熱心網友回復:
ListenerContainerFactoryBeanSpring AMQP 中的(作為頂級)抽象,可以配置為多個佇列使用:
public void setQueueNames(String... queueName) {
this.queueNames = queueName;
}
public void setQueues(Queue... queues) {
this.queues = queues;
}
可以在以下位置提供多個主機AbstractConnectionFactory:
/**
* Set addresses for clustering.
* This property overrides the host port properties if not empty.
* @param addresses list of addresses with form "host[:port],..."
*/
public synchronized void setAddresses(String addresses) {
但是正如您所見,所有佇列都必須在集群中,因此所有這些佇列都必須在所有這些集群成員上進行鏡像,以實作解決方案的容錯行為。
看起來您顯示的屬性與 Spring Boot 自動配置無關,但這里是RabbitProperties要調查的相應屬性。
注意:如果您只是實作消費者端,則不需要知道交換。您總是從特定佇列中消費。交換是生產者如何分發和傳遞您發送的訊息的問題。
uj5u.com熱心網友回復:
我用 MQ 做到了這一點,但從來沒有用過 Rabbit。MQ 解決方案似乎仍然適用于 Rabbit。
ConnectionFactory為每個服務器創建一個不同的(使用你自己的配置屬性設定,而不是默認的 Rabbit)。ContainerFactory為每臺服務器創建一個,參考listener注解中的connectionFactory。手動將 containerFactory 中的 connectionFactory 到“正確”的 connectionFactory(由正確的服務器定義)。- 在偵聽器注釋中參考您的偵聽佇列名稱。
- 為每個服務器創建一個 jmsTemplate,與 containerFactory 一樣,手動將 jmsTemplate 中的 connectionFactory 設定為“正確”值。此外,為每個 jmsTemplate 設定唯一的限定符值。
- 注入 JmsTemplate 時,請參考限定符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/341287.html
標籤:弹簧靴 兔子mq 弹簧-amqp 春兔 rabbitmq-exchange
上一篇:java.lang.IllegalArgumentException:parseAlgParametersfailed:ObjectIdentifier()--資料不是物件ID(tag=48)
下一篇:Mono回傳空串列
