2016-03-28 46 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'就在其中。 –