2016-03-28 94 views
1

是新來的彈簧rabbitMQ.I有以下如果沒猜錯question..Please正確:春天的RabbitMQ匿名隊列

我有申請即三個實例。

的Instance1 實例2 Instance3

注意:這些情況下不需要固定number.All這些情況下聽實例的數量是不固定的同一exchange..As,我的要求是相同的消息shuld是接收所有三/(數量可以)變量..如何實現這一點使用春天amqp

如果聲明隊列名稱並綁定交換消息​​將跨實例分割..但我想rabbitmq消息(來自交易所的消息)到所有的隊列..我們如何能夠實現這一點..我聽到了一些像匿名隊列...

如何編程在彈簧不通過XML聲明實現這一點,並使用SPEL申報隊列ID

步驟1:創建連接工廠 步驟2:創建交換 步驟3:創建一個隊列 步驟4:創建AMQP管理員然後聲明該隊列 步驟5:綁定隊列交換

同樣在停止實例隊列應該自動刪除..應該在後期構造中給出?

本代碼是作爲simliar如下:

CachingConnectionFactory CF =新CachingConnectionFactory( 「192.168.1.10」,5672);

RabbitAdmin admin = new RabbitAdmin(cf); 

FanoutExchange testExchange = new FanoutExchange("testExchange", true, false); 
admin.declareExchange(testExchange); 

Queue testQueue = new Queue("testQueue", true, false, true); 
admin.declareQueue(testQueue); 

admin.declareBinding(BindingBuilder.bind(testQueue).to(testExchange)); 

SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); 
container.setConnectionFactory(cf); 
container.setRabbitAdmin(admin); 

container.setQueues(testQueue); 
container.setMessageListener(new MessageListenerAdapter() { 
    public void handleMessage(String text) { 
     System.out.println("Received : " + text); 
    } 
}); 
container.afterPropertiesSet(); 

container.start(); 

回答

1

你走正道與autodeleted隊列,但他們可能不anonymous,雖然可能每個實例是唯一的。

這裏的主要功能是你的Fanout Exchange。實際上,這個Exchange能夠將相同的消息發送到所有訂閱(綁定)隊列。

你可以在RabbitMQ Tutorial找到更多的信息。

+0

我們已經在使用扇出交換..但問題是我們正在使用spring amqp,我們在其中設置了edscontainer.setQueueNames(queue_name);如何實現這個使用自動刪除隊列 –

+0

基本上我們該如何處理這個scneario ConnectionFactory connectionFactory = new CachingConnectionFactory(); AmqpAdmin admin = new RabbitAdmin(connectionFactory); admin.declareQueue(new Queue(「myqueue」)); –

+0

???一般而言,您不需要手動執行此操作。 「RabbitAdmin」會自動關注所有「實體」和它們之間的綁定。當然,如果他們被宣佈爲豆類。請參閱'隊列「。 'autoDelete'就在其中。 –