activeMQ的配置及使用

activeMQ的配置

  1. 添加依赖
                  <!--ActiveMq-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-activemq</artifactId>
			<version>1.5.0.RELEASE</version>
		</dependency>
		<!--消息队列连接池-->
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-pool</artifactId>
			<version>5.15.0</version>
		</dependency>
  1. 添加properties配置
#activemq配置
spring.activemq.broker-url=tcp://127.0.0.1:61616
spring.activemq.password=admin
spring.activemq.user=admin
#true 表示使用内置的MQ,false则连接服务器
spring.activemq.in-memory=false
#true表示使用连接池;false时,每发送一条数据创建一个连接
spring.activemq.pool.enabled=true
#连接池最大连接数
spring.activemq.pool.max-connections=10
#空闲的连接过期时间,默认为30秒
spring.activemq.pool.idle-timeout=30000
#强制的连接过期时间,与idleTimeout的区别在于:idleTimeout是在连接空闲一段时间失效,而expiryTimeout不管当前连接的情况,只要达到指定时间就失效。默认为0,never
spring.activemq.pool.expiry-timeout=0
  1. 在主启动类上添加注解:@EnableJms

整合使用

  1. 添加provider端的配置类
@Configuration
public class MessageQueueConfig {

    @Bean(name = "queue")
    public Queue getQueue() {
        return new ActiveMQQueue("nameQueue");
    }

}
  1. 发送消息
@RestController
@RequestMapping("/provider")
public class ProviderController {

    @Autowired
    private Queue queue;
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;

    @GetMapping("send")
    public void sendMessage(String name) {
        jmsMessagingTemplate.convertAndSend(queue, name);
    }
}
  1. consumer
@Component
public class ConsumerService {
 
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;
 
    // 使用JmsListener配置消费者监听的队列,其中name是接收到的消息
    @JmsListener(destination = "nameQueue")
    // SendTo 会将此方法返回的数据, 写入到 OutQueue 中去.
    @SendTo("SQueue")
    public String handleMessage(String name) {
        System.out.println("成功接受Name" + name);
        return "成功接受Name" + name;
    }

}
posted @ 2020-11-28 15:59  summercloud  阅读(808)  评论(0)    收藏  举报