欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springboot简单集成activemq简单示例

程序员文章站 2022-04-30 19:41:06
...

本文主要简单介绍消息服务在springboot中如何使用

1:引入pom依赖

<!--springboot集成jms依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

2:配置文件中配置连接信息

#activemq服务地址
spring.activemq.broker-url=tcp://192.168.58.128:61616

#消息目的地
spring.jms.template.default-destination=springboot-message

#消息发送方式 false:点对点模式    true:订阅模式
spring.jms.pub-sub-domain=true

3:发送消息核心代码

@Service
public class MessageSenderServiceImpl implements MessageSenderService {

    @Value("${spring.jms.template.default-destination}")
    private String destination;

    /**
     * 自动导入jms消息模板对象:同步接受
     */
    @Autowired
    private JmsTemplate jmsTemplate;

    /**
     * 发送消息无需返回值
     * @param message
     */
    @Override
    public void sendMessage(String message) {
        jmsTemplate.send(destination, new MessageCreator() {
            @Override
            public Message createMessage(Session session) throws JMSException {
                return session.createTextMessage(message);
            }
        });
    }
}

4:接收消息核心代码

(1)->使用同步方式接收

@Service
public class MessageReceiveServiceImpl implements MessageReceiveService {

    @Value("${spring.jms.template.default-destination}")
    private String destination;

    /**
     * 自动导入jms消息模板对象,此为同步接收消息
     */
    @Autowired
    private JmsTemplate jmsTemplate;

    @Override
    public void receiveMessage() {
        Message receiveMessage = jmsTemplate.receive(destination);
        if(receiveMessage instanceof TextMessage){
            try {
                String text = ((TextMessage) receiveMessage).getText();
                System.out.println("接收到的消息为---》"+text);
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }
}

(1)->使用异步方式接收

@Component
public class JmsListenerServiceImpl {
    
    /**
     * 异步接收消息 :jms监听器自动把消息注入到修饰的方法的参数message中,服务启动,进入监听
     */
    @JmsListener(destination="${spring.jms.template.default-destination}")
    public void receiveasyncMessage(Message message) {
        if(message instanceof TextMessage){
            try {
                String text = ((TextMessage) message).getText();
                System.out.println("监听方式接收到的消息为---》"+text);
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }
}