当前位置: 首页 > 知识库问答 >
问题:

固定应答队列配置

龚凯泽
2023-03-14
public class Producer {

    private static ApplicationContext context;
    private static RabbitTemplate template;

    public static void main(String[] args) {
        new ClassPathXmlApplicationContext("mq-producer-context.xml");
        context = new ClassPathXmlApplicationContext("context.xml");
        template = context.getBean(RabbitTemplate.class);
        //Queue replyQueue = new Queue("ub.replyqueue");
        //template.setReplyQueue(replyQueue);
    }

    @Scheduled(fixedRate = 1000)
    public void execute() {
        System.out.println("execute...");
        template.convertAndSend("helloooo");
        //template.convertSendAndReceive("helloooo");
    }
}
public class Consumer implements MessageListener {

    public static void main(String[] args) {
        new ClassPathXmlApplicationContext("mq-consumer-context.xml");
    }

    public void onMessage(Message message) { 
        System.out.println("message received" + message);
    }
    /**public String handleMessage(String msg) {
        return "RECEIVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
    }**/
}
<beans>
    <import resource="context.xml" />

    <task:scheduler id="myScheduler" pool-size="10" />
    <task:annotation-driven scheduler="myScheduler" />

    <bean id="producer" class="com.urbanbuz.mq.Producer"></bean>
</beans>
<beans>
    <import resource="context.xml"/>

    <rabbit:listener-container connection-factory="connectionFactory">
        <rabbit:listener ref="consumer" queue-names="ub.queue" />
    </rabbit:listener-container>

    <context:annotation-config />
    <context:component-scan base-package="com.urbanbuz.mq" />
    <aop:aspectj-autoproxy />

    <bean id="consumer" class="com.urbanbuz.mq.Consumer"></bean>
</beans>

xml:

<beans>
    <rabbit:connection-factory id="connectionFactory" host="localhost" virtual-host="farahvhost" username="farah" password="farah" />

    <rabbit:admin connection-factory="connectionFactory" />

    <rabbit:queue name="ub.queue" />

    <rabbit:direct-exchange name="ub.exchange">
        <rabbit:bindings>
            <rabbit:binding queue="ub.queue"></rabbit:binding>
        </rabbit:bindings>
    </rabbit:direct-exchange>

    <rabbit:template id="amqpTemplate" connection-factory="connectionFactory" exchange="ub.exchange" queue="ub.queue" reply-timeout="15000" />
</beans>

文件并不清楚。我尝试在生产者端使用convertSendAndReceive,在使用者端使用on消息处理程序,但是没有工作(代码注释掉了,如上面所示),我得到了这个错误:没有指定默认侦听器方法:为'default ListenerMethod'属性指定一个非空值,或者重写'Get ListenerMethodName'方法。

共有1个答案

茹展鹏
2023-03-14

使用固定应答队列时,必须在rabbit模板上配置侦听器容器。

最简单的配置是向模板添加 元素

有关完整的详细信息,请参阅参考文档。

 类似资料:
  • 我做了一个表头和列固定的表。但这里我已经指定了我不想要的头/体的宽度。我用引导类col-md-6(50%宽度)将整个表放在一个div中。但是除非我为thead和tbody硬编码样式,否则它是不起作用的。我希望thead和tbody取父div的宽度。但如果没有指定像素或百分比,则会占用屏幕的全宽。这是我的代码 null null 所有我想要的是使表的响应,而不是像静态400px或50%或类似的东西。

  • 输入样本: 第一行=组数,N 以下N行=第一个数字是K组中元素的#,以下K个数字是元素本身(范围为0…999999) 停止输入之前的所有行=排队或出列查询。如果排队,则您正在将当前正在处理的元素E排队,在A处。如果队列中没有与E或B属于同一“组”的元素,则在队列的末尾。位于与E属于同一“组”的最后一个元素的正后方 出列很简单,只需从队列中删除第一个元素。对于每个出列查询,输出出列的元素。 一个元素

  • 实现特殊的表格(UITableView)效果:即表格中的首列固定不动,而每一行除了首列均可左右拖动,以展现每一行更多内容。 作者谭林江(@无法越狱的痛)说:去益盟面试回来,感觉聊得有点郁闷,没有展示出自己的示例,其中面试者就拿了他们的软件过来让我分析一下是怎么做的,当时脑壳有点晕,没反应过来。出来后一直感觉不爽,于是回来花了2个小时时间,把他们这个东西搞了出来。 大体描述如下: 整体看上去是个ta

  • 然而,我想澄清我所看到的。首先,这是针对一个在多服务器集群上运行40+个分区作业的系统。现在入站网关的配置是: 出站网关为: 然后,我添加了一个作业监听器,用于在作业启动和停止时启动和停止出站网关。当我启动系统时,JBoss JMX控制台显示请求队列中有2个消费者,响应队列中没有预期的消费者。 如果额外的处理程序来自replyListener,那么作业监听器是否也需要停止并启动它? 如果额外的处理

  • 概念 消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并且只完成了一部分,如果它突然挂掉了,会发生什么情况? RabbitMQ一旦向消费者传递了一条消息,就会立即将该消息标记为删除。在这种情况下突然有个消费者挂掉了,将会丢失正在处理的信息,以及后续应该发送给该消费者的信息,因为该消费者无法接收到 为了保证消息在发送过程中不丢失,RabbitMQ引入消息应答机制 消息应答机制指

  • 我正在Azure中创建一个函数应用程序,并希望使用队列触发器。我知道如何在设计时配置队列名称,例如: 但是,我希望能够在配置文件中定义和引用它。我知道函数的存在。json(可能是这个),主机。json和本地。设置。json,但我不知道如何在其中设置队列名称并在函数中引用它。 如果我部署在VisualStudio中新创建的函数(使用新的15.3更新),我可以在函数中看到以下内容。部署后的json文件

  • 有没有一种方法可以限制RabbitMQ队列只将固定数量的消息从队列发送给使用者? 关于这一问题的更多背景资料: 为什么一次只处理2条消息?:Q2消息正在执行web服务调用,而web服务endpoint(第三方)只能同时服务2个消息。 我们不能使用并发吗?:如果我们使用ListenerContainer(Spring AMQP),则容器是每个消费者的。我们可以限制一个消费者一次可以获取多少消息,但是