• activemq jms使用


    activemq 是 基于 jms 协议的 消息队列

    消息 流程:

      jsm 的 消息流程鼻尖简单  生产者发送消息到目的地,消费者 监听这个目的地,然后收到消息。 相比 amqp 的 消息流程简单很多。

    producer:生产者,产生消息。

    consumer:消费者

    destination:目的地  jms 定义了两种 目的地,一种是queue 一种是 topic

    queue:点对点的 消息队列,一个消息被发送到queue 里面 ,只会被一个消费者消费,并且只会被消费一次。queue 里面消息是持久的。 消费者上线以后可以慢慢消费积压 的消息。

    topic: 发布订阅机制。发布到 topic 的消息 ,会被 这个当前topic 上面的每一个 消费者消费。并且topic 的消息不持久,没有在线的消费者永远收不到这条消息了。  类似于 amqp 的 fanout 。

    spring boot 集成 的  activemq 消息发送的代码:

    	@Autowired
    	private JmsMessagingTemplate jmsTemplate;
    
    	/**
    	 * 把消息发送给mq
    	 * 
    	 * @author ZHANGYUKUN
    	 * @param message
    	 * @throws Exception
    	 */
    	public void send(Message message) {
    		if (StringUtils.isEmpty(message.getDestination())) {
    			throw new RuntimeException("没有目的地");
    		}
    
    		Destination destination = new ActiveMQQueue(message.getDestination());
    		jmsTemplate.convertAndSend(destination, message );
    	}
    

      消费者的实现:

    @Component
    public class UserMessageConsumers {
    
    	@Autowired
    	MessageService messageService;
    	
    	@Autowired
    	UserServiceImpl userService;
    
    	@JmsListener(destination = "user-service-insert")
    	public void consume(Message message) {
    		User user = JSONObject.parseObject( message.getContent() ,  User.class );
    		
    		
    		if( userService.queryByUUID( user.getUuid() ) == null ) {
    			userService.insert( user );
    		}
    	
    		messageService.ack(message.getUuid());
    	}
    
    }
    

      

    Maven  依赖:

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

      

  • 相关阅读:
    超详细的 Vagrant 上手指南
    简单聊聊 Ironic
    什么是裸金属
    使用 minikube 快速上手 Kubernetes | v1.7.3
    来看看你对Python变量理解到位了没有
    python HelloWorld 的 4 种姿势,你知道几种
    Windows 系统安装 Python 3.8 详解
    myeclipse2017下载安装与破解详细教程
    eclipse中tomcat的add and Remove找不到项目
    cmd中查看MySQL数据库表数据及结构
  • 原文地址:https://www.cnblogs.com/cxygg/p/9526283.html
Copyright © 2020-2023  润新知