• ActiveMQ消息中间件(集成spring与springboot)


    ---恢复内容开始---

    spring集成ActiveMQ

    1.相关依赖

          <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-jms</artifactId>
               <version>4.0.0.RELEASE</version>
           </dependency>
           <dependency>
               <groupId>org.apache.activemq</groupId>
               <artifactId>activemq-pool</artifactId>
               <version>5.7.0</version>
           </dependency>
           <dependency>
               <groupId>org.apache.activemq</groupId>
               <artifactId>activemq-core</artifactId>
               <version>5.7.0</version>
           </dependency>

    2.相关配置

     <context:component-scan base-package="com.lhc.service"></context:component-scan>
       <!--和activeMQ集成的问题-->
       <!--创建连接工厂-->
       <bean id="amq" class="org.apache.activemq.ActiveMQConnectionFactory">
           <property name="password" value="admin"></property>
           <property name="userName" value="admin"></property>
           <property name="brokerURL" value="tcp://192.168.64.138:61616"></property>
       </bean>
    <!--当前目的地为队列 如果使用发布订阅 则应修改为topic-->
       <bean id="queue" class="org.apache.activemq.command.ActiveMQQueue">
           <property name="physicalName" value="springQueue"></property>
       </bean>

       <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
           <property name="connectionFactory" ref="amq"></property>
           <property name="defaultDestination" ref="queue"></property>
           <!--是发布订阅还是点对点 默认false 为点对点-->
           <property name="pubSubDomain" value="false"></property>
       </bean>

    3.生产者的开发


       @Autowired
       JmsTemplate jmsTemplate;

       public void send(final String msg) {
           jmsTemplate.send(new MessageCreator() {
               public Message createMessage(Session session) throws JMSException {
                   TextMessage textMessage = session.createTextMessage();
                   textMessage.setText(msg);
                   return textMessage;
              }
          });
           //发送消息
      }

    4.消费者的开发

     @Autowired
       JmsTemplate jmsTemplate;

       public String receive() {

           String text = null;
           try {
               TextMessage message = (TextMessage) jmsTemplate.receive();
               text = message.getText();
               System.out.println("this is consumer receive the text is------>" + text);
          } catch (JMSException e) {
               e.printStackTrace();
          }
           return text;
      }

    5.现有开发中存在的问题

    消费者需要手动启动,发送请求才能接受到消息,借助activeMQ的监听

    1.声明消息监听器
    public class ConsumerListener implements MessageListener {

       public void onMessage(Message message) {
           TextMessage textMessage = (TextMessage) message;
           try {
               String text = textMessage.getText();
               System.out.println(text);
          } catch (JMSException e) {
               e.printStackTrace();
          }
      }
    }
    2.将相关对象交由工厂管理
      <!--消息监听器-->
       <bean id="consumerListener" class="com.lhc.service.ConsumerListener"></bean>
       <!--消息监听容器-->
       <bean id="messageListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
           <property name="pubSubDomain" value="false"></property>
           <property name="destination" ref="queue"></property>
           <property name="messageListener" ref="consumerListener"></property>
           <property name="connectionFactory" ref="amq"></property>
       </bean>

    springboot集成ActiveMQ

    1.相关依赖

          <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-activemq</artifactId>
           </dependency>
           <dependency>
               <groupId>org.apache.activemq</groupId>
               <artifactId>activemq-pool</artifactId>
           </dependency>

    2.生产者


    @Component
    public class Product {
       @Autowired
       JmsTemplate jmsTemplate;

       public void sendMessage(String message) {
           Destination destination = new ActiveMQQueue("springboot-queue");
           this.jmsTemplate.convertAndSend(destination, message);
      }

    }

    3.消费者

    @Component
    public class Consumer {
       @JmsListener(destination = "springboot-queue")
       public void receiveQueue(TextMessage msg) {
           try {
               System.out.println(msg.getText());
          } catch (JMSException e) {
               e.printStackTrace();
          }
      }
    }

    4.配置文件

    spring.activemq.broker-url=tcp://192.168.64.138:61616
    spring.activemq.password=admin
    spring.activemq.user=admin

    ---恢复内容结束---

  • 相关阅读:
    Python实战之SocketServer模块
    CentOS出错You don't have permission to access on this server
    系统瓶颈分析
    loadrunner支持https协议的操作方法-经验总结
    Loadrunner上传与下载文件脚本
    Loadrunner之HTTP接口测试脚本实例
    Android界面性能调优手册
    Loadrunner11.0 录制手机App脚本的方法
    资源监控工具--spotlight
    Jmeter常见问题
  • 原文地址:https://www.cnblogs.com/lhc-hhh/p/10280726.html
Copyright © 2020-2023  润新知