activemq使用多个queue

之前的配置参考https://blog.csdn.net/qq_27721169/article/details/80590587

1、配置进行修改,去掉queue配置注入

@Configuration
public class QueueConfig {

//    @Bean
//    public Queue queue() {
//        return new ActiveMQQueue("order.queue");
//    }

    @Autowired
    private ActiveMQConnectionFactory connectionFactory;

    @Bean
    public QueueProducerService queueProducerService() {
        return new QueueProducerServiceImpl();
    }

    @Bean
    public QueueConsumerService queueConsumerServiceImpl() {
        return new QueueConsumerServiceImpl();
    }

    @Bean
    public QueueConsumerService queueActPickGoldServiceImpl() {
        return new QueueActPickGoldServiceImpl();
    }

    @Bean
    public JmsMessagingTemplate jmsMessagingTemplate() {
        JmsMessagingTemplate jmsMessagingTemplate = new JmsMessagingTemplate(connectionFactory);
        jmsMessagingTemplate.setMessageConverter(new SimpleMessageConverter());
        return jmsMessagingTemplate;
    }

}

1、生产者端代码

接口

public interface QueueProducerService<T extends Serializable> {

    void send(T msg, String name, long delayTime);
}

实现

public class QueueProducerServiceImpl implements QueueProducerService {

    @Autowired
    private JmsTemplate jmsTemplate;

    @Override
    public void send(Serializable msg, String destinationName, long delayTime) {
        jmsTemplate.send(destinationName, session -> {
            ObjectMessage objectMessage = session.createObjectMessage(msg);
            if (delayTime > 0) {
                objectMessage.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delayTime);
            }
            return objectMessage;
        });
    }
}

2、消费者

接口

public interface QueueConsumerService<T extends Serializable> {

    void receiveQueue(T msg);

}

实现,根据业务不同有多个

public class QueueConsumerServiceImpl implements QueueConsumerService<OrderCancel> {

    @Autowired
    YoupinOrderService youpinOrderService;

    @Override
    @JmsListener(destination = "order.queue")
    public void receiveQueue(OrderCancel orderCancel) {
        //业务
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前几章我们分别利用spring rmi、httpinvoker、httpclient、webservice技术实现不同服务器间的远程访问。本章我将通过spring jms和activemq实现单Web项目服务器间异步访问和多Web项目服务器间异步访问。 一. 简介 1. 什么是Apache ActiveMq Apache ActiveMq是最流行和最强大的开源消息和集成服务器。同时Apache ActiveMq是速度快,支持多种跨语言客户端和协议,同时配有易于使用的企业集成模式和优秀的特性,并且支持JMS1.1和J2EE1.4。具体特性见官网:http://activemq.apache.org/ 2. 什么是JMS JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑。 JMS 支持两种消息传递模型: 点对点(point-to-point,简称 PTP) 发布/订阅(publish/subscribe,简称 pub/sub)。 这两种消息传递模型非常相似,但有以下区别: PTP 消息传递模型规定了一条消息只能传递给一个接收方。 采用javax.jms.Queue 表示。Spring配置类型destination-type="queue"。 Pub/sub 消息传递模型允许一条消息传递给多个接收方。采用javax.jms.Topic表示。Spring配置类型destination-type="topic"。 二. 单服务器异步访问 3. Spring 整合JMS和ActiveMq流程 1) 下载和部署ActiveMq服务器 2) Spring jms和activemq相关依赖引入 3) Spring整合activemq配置 4) 定义消息发布者(生产者) 5) 定义消息订阅者(消费者) 6) Spring mvc配置 7) 实例测试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值