activeMQ的简单使用

消息发送端

消息提供端的的抽象类

public abstract class MqProvider<T> {

    @Autowired
    protected JmsMessagingTemplate jmsMessagingTemplate;

    public abstract void publish(String destination, T object);

    public ActiveMQQueue newQueueInstance(String destination) {
        return new ActiveMQQueue(destination);
    }

    public ActiveMQTopic newTopicInstance(String destination) {
        return new ActiveMQTopic(destination);
    }

}

点对点模式的具体实现类

@Component
public class ActiveMQQueueProvider extends MqProvider<String> {

    @Override
    public void publish(String destination, String value) {
        TextMessage mqTextMessage = new ActiveMQTextMessage();
        try {
            mqTextMessage.setText(value);
        } catch (JMSException e) {
            e.printStackTrace();
        }

        super.jmsMessagingTemplate.convertAndSend(super.newQueueInstance(destination), mqTextMessage);
    }

}

顺便来个destination的常量类

public class ActiveMQQueueConstants {

    public static final String QUEUE_ORDER_AUTO_TASK = "SHOP.WECHAT.ORDER.AUTO.TASK";

    
}

最后就是消息的发送了

@RestController
@RequestMapping("/provider")
public class ProviderController {

    @Autowired
    private ActiveMQQueueProvider activeMQQueueProvider;
    
    @GetMapping("send")
    public void sendMessage(String tasKId) {
        activeMQQueueProvider.publish(ActiveMQQueueConstants.QUEUE_ORDER_AUTO_TASK, tasKId);
    }
}

消费端

@Component
public class ConsumerService {

    @JmsListener(destination = "SHOP.WECHAT.ORDER.AUTO.TASK")
    @SendTo("RetQueue")  //将方法的返回值传入RetQueue
    public String handleMessage(String tasKId) {
        System.out.println(tasKId);
        return "success";
    }

}
posted @ 2020-12-01 19:49  summercloud  阅读(102)  评论(0)    收藏  举报