SpringBoot интегрирует ActiveMQ [суперподробная версия]

Оглавление

Введение

Что такое ActiveMQ

Концепция JMS

Установите и запустите ActiveMQ в Linux

Войдите на страницу управления activemq

SpringBoot интегрирует режим очереди ActiveMQ

 режиссер

зависимость от помпа

Настроить YML 

 Стартап-класс

 Настроить каналы

Тестовая отправка информации в канал

получатель

зависимость от помпа

конфигурация YML

Стартап-класс

Принять класс mq

SpringBoot интегрирует режим темы ActiveMQ

 режиссер

Создать тематический канал

 Тестовая отправка сообщения для входа в тему

получатель

 ямл

 Приемный класс


Введение

Что такое ActiveMQ

Очередь сообщений — это асинхронный метод связи между процессами или потоками. Используя очередь сообщений, производитель сообщений будет сохранять сообщение в очереди сообщений до тех пор, пока потребитель сообщения не заберет его. Реализуйте разделение услуг и улучшите надежность и масштабируемость системы.
В настоящее время существует множество широко используемых очередей сообщений с открытым исходным кодом, таких как RabbitMQ, ActiveMQ, Redis, Kafka и т. д., которые часто называют промежуточным программным обеспечением сообщений.
В этой статье в качестве примера используется Apache ActiveMQ для интеграции режима очереди и режима широковещания ActiveMQ, и он совместим с обоими.
 

Концепция JMS

JMS

JMS, интерфейс прикладного программирования службы сообщений Java, представляет собой API-интерфейс промежуточного программного обеспечения, ориентированного на сообщения (MOM), на платформе Java, используемый для отправки сообщений между двумя приложениями или в распределенной системе для асинхронной связи. Служба сообщений Java — это API-интерфейс, независимый от платформы, и большинство поставщиков промежуточного программного обеспечения обеспечивают поддержку JMS. Отношения между JMS и ActiveMQ аналогичны отношениям между JDBC и драйверами JDBC. .

JMS включает две модели сообщений: «точка-точка» и «издатель/подписчик»; «
точка-точка»: – отправитель сообщения отправляет сообщение, агент сообщений помещает его в очередь, а получатель сообщения получает содержимое сообщения из очереди. После того, как сообщение прочитано, оно удаляется из очереди – У сообщения только один отправитель и получатель, но это не означает, что может быть только один получатель. Публикация и подписка: – Отправитель (издатель) отправляет
сообщение тему, и несколько получателей (подписчиков) слушают (подписываются) эту тему, то сообщение будет получено одновременно с приходом сообщения

 JMS определяет унифицированный интерфейс для унификации операций с сообщениями;
JMS ограничивает использование языка Java;
JMS определяет две модели сообщений; а модель сообщений AMQP более богата.

Установите и запустите ActiveMQ в Linux

Ссылка: https://pan.baidu.com/s/1tZSs6iefzKVLHSwxihQ3Nw?pwd=1234 
Код извлечения: 1234

//复制到虚拟机,解压出来
tar -zxvf apache-activemq-5.14.5-bin.tar.gz

//解压完成之后,进入文件/bin目录下
cd apache-activemq-5.14.5/bin
//启动activemq
 ./activemq start

 Началось успешно

Уведомление:

        Отключить брандмауэр

Войдите на страницу управления activemq

http://ваш собственный IP-адрес: 8161 /  для входа на страницу управления ActiveMQ 

Введите пароль учетной записи: admin  

 

 

SpringBoot интегрирует режим очереди ActiveMQ

версия Springboot: 2.3.4.RELEASE

Уведомление:

Режим очереди:

        Режим очереди можно понимать как режим «первым пришел — первым обслужен».После того как производитель публикует сообщение, оно сохраняется в очереди и ждет, пока его получит слушатель. Слушатель получит информацию в очереди, когда она появится в сети! Но как только она будет получена, информация в очереди исчезнет. 

 режиссер

зависимость от помпа

   <!-- ActiveMQ -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

Настроить YML 

spring:
 
  activemq:
    broker-url: tcp://自己的activemq服务器ip:61616
    packages:
      #配置信任所有的包,这个配置为了支持发送对象消息
      trust-all: true
    user: admin
    password: admin

 Стартап-класс

@SpringBootApplication
@EnableJms #开启JMS
public class SpringBootThree {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootThree.class,args);
    }
}

 Настроить каналы


/**
 * 专门配置mq通道的配置类
 */
@Configuration
public class QueueConfig {


    @Bean(name = "queueName")
    Queue queueName(){

        return  new ActiveMQQueue("test_queue");
    }


}

Тестовая отправка информации в канал

@SpringBootTest
public class RedisTest {

  
  @Autowired
    JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
    Queue queueName;
    @Test
    public void test5(){

            String message="我是发送消息的人,听得到吗";
            jmsMessagingTemplate.convertAndSend(queueName, message);

    }

}

получатель

зависимость от помпа

<!-- ActiveMQ -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>

конфигурация YML

server:
  port: 10006


spring:

  activemq:
    broker-url: tcp://自己的activemq服务器的ip:61616
    packages:
      #配置信任所有的包,这个配置为了支持发送对象消息
      trust-all: true
    user: admin
    password: admin
  

Стартап-класс

@SpringBootApplication
public class ConsumerMain10006 {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerMain10006.class,args);
    }
}

Принять класс mq

/**
 * 用于监听MQ
 */
@Component
public class MQConfig {




    @JmsListener(destination = "test_queue")
    public  void  onMessage(String message){

           
        System.out.print(message)
        //获取到消息后可以干一些事情
      


    }
}

SpringBoot интегрирует режим темы ActiveMQ

Уведомление:

      Разница между режимом темы и режимом очереди:

                1. Сообщения, опубликованные в режиме темы, могут быть распространены среди всех подписчиков.

               2. Режим темы - это режим публикации-подписки. Только когда подписчик (класс прослушивания) находится в сети, сообщение может быть получено. Если соединение находится посередине, предыдущее сообщение не может быть получено, и может быть доступна только последующая информация. быть принятым!

               

 режиссер

Pom, yml, класс запуска и режим очереди производителя одинаковы.

Создать тематический канал



/**
 * 专门配置mq通道的配置类
 */
@Configuration
public class QueueConfig {


    @Bean(name = "queueName")
    Queue queueName(){

        return  new ActiveMQQueue("test_queue");
    }

//主题(发布\订阅模式)通道
   @Bean(name="queueFind")
    Topic queueFind(){
        return new ActiveMQTopic("cctv");
    }


}

 Тестовая отправка сообщения для входа в тему

@SpringBootTest
public class RedisTest {

  
  @Autowired
    JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
    Queue queueName;

@Autowired
Topic  queueFind;

    @Test
    public void test5(){

            String message="我是发送消息的人,你接受我就没了";
            jmsMessagingTemplate.convertAndSend(queueName, message);

    }

 @Test
    public void test6(){

            String message="我是主题可以发布所有监听我的人,但是我发布你必须在线";
            jmsMessagingTemplate.convertAndSend(queueFind, message);

    }

}

получатель

pom — это то же самое, что и очередь классов запуска.   

 ямл

spring:

  activemq:
    broker-url: tcp://自己acvtvemq服务器的ip:61616
    packages:
      #配置信任所有的包,这个配置为了支持发送对象消息
      trust-all: true
    user: admin
    password: admin
   
#开启主题策略,默认是关闭 开启主题模式
  jms:
    pub-sub-domain: true

 Приемный класс

/**
 * 用于监听MQ
 */
@Component
public class MQConfig {




    @JmsListener(destination = "test_queue")
    public  void  onMessage(String message){

           
        System.out.print(message)
        //获取到消息后可以干一些事情
      

    }


    
    @JmsListener(destination = "cctv")
    public  void  cctv(String message){

           
        System.out.print(message)
        //获取到消息后可以干一些事情
      

    }
}

おすすめ

転載: blog.csdn.net/wang20000102/article/details/132725583