Grails,Grails RabbitMQ插件,Java,Spring AMQP-多客户端

Grails,Grails RabbitMQ插件,Java,Spring AMQP-多客户端,java,grails,rabbitmq,grails-plugin,spring-amqp,Java,Grails,Rabbitmq,Grails Plugin,Spring Amqp,我开发了简单的GrailsRESTWeb服务,它使用GrailsRabbitMQ插件并向队列发送消息 Grails-Config.groovy queues = { exchange name: 'my.topic', type: topic, durable: false, { foo durable: true, binding: 'test.#' } } 在我的Java桌面应用程序中,我尝试使用Spring AMQP来收听该消息 Main.java pu

我开发了简单的GrailsRESTWeb服务,它使用GrailsRabbitMQ插件并向队列发送消息

Grails-Config.groovy

queues = {
    exchange name: 'my.topic', type: topic, durable: false, {
        foo durable: true, binding: 'test.#'

    }
}
在我的Java桌面应用程序中,我尝试使用Spring AMQP来收听该消息

Main.java

public static void main(String[] args) {
    CachingConnectionFactory cf = new CachingConnectionFactory("localhost");
     cf.setUsername("guest");
     cf.setPassword("guest");
        RabbitAdmin admin = new RabbitAdmin(cf);
        SimpleMessageListenerContainer container =
                new SimpleMessageListenerContainer(cf);

        Object listener = new Object() {
            public void handleMessage(String foo) {
                System.out.println(foo);
            }
        };

        MessageListenerAdapter adapter = new MessageListenerAdapter(listener);
        container.setMessageListener(adapter);
        container.setQueueNames("foo");
        container.start();
}
当我运行多个客户端(比如两个)时,有时一个接收“消息”,有时另一个。 两个客户端如何在每次“发送”时接收“消息”(我通过重新加载页面从我的索引Grails控制器发送消息)


您更喜欢哪种方式?我是新手:)

每个消费者都需要自己绑定到exchange的队列


同一队列上的多个使用者竞争消息。

是否可以开发一个应用程序,在该队列上侦听不同的消息。那么我的Main.java会是什么样子呢?不。与JMS不同,AMQP中队列上没有消息选择器的概念。您必须配置exchange以在代理中进行选择。您可以在一个侦听器容器中侦听多个队列,但不能只侦听选定的消息(如果这是您的意思的话)。如何在一个侦听器中侦听多个队列。你能给我看一些代码吗。我正在努力学习AMQP的概念,这很难理解。container.setQueueNames(“foo”、“bar”、“baz”);我建议你先看看这本书。也看到了。谢谢。这个概念,即带有RabbitMQ的AMQP能否用于下一个场景。创建java桌面应用程序,同一应用程序的多个实例将在专用网络上的不同机器上运行。所有应用程序将如何检测来自服务器的更改(从Grails服务器发送消息),请简单介绍一下这方面的基本概念。