1. 程式人生 > >ActiveMQ 使用demo

ActiveMQ 使用demo

1.座標

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>

2. 配置

在這裡插入圖片描述

spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.in-memory=false
spring.activemq.pool.enabled=false
spring.activemq.user=admin
spring.activemq.password=admin

3.1 生產者

在這裡插入圖片描述
LoginProducer程式碼:

package com.czxy.mq.producer;

import org.apache.activemq.command.ActiveMQMapMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Service;

import javax.
jms.Destination; /** * @author Fang * @create 2018-10-20 18:19 * @desc 生產者 **/ @Service public class LoginProducer { @Autowired private JmsMessagingTemplate template; public void sendMessage(Destination destination, ActiveMQMapMessage message){ System.out.println("已成功生產訊息"); template.
convertAndSend(destination,message); } }

3.2 放入訊息佇列裡:

在這裡插入圖片描述
UserService(業務邏輯層程式碼)

package com.czxy.service.impl;

import com.czxy.dao.TUserMapper;
import com.czxy.domain.TUser;
import com.czxy.mq.producer.LoginProducer;
import com.czxy.service.UserService;
import org.apache.activemq.command.ActiveMQMapMessage;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.jms.JMSException;

/**
 * @author Fang
 * @create 2018-10-20 18:10
 * @desc  業務層實現類
 **/
@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    private LoginProducer loginProducer;

    @Autowired
    private TUserMapper tUserMapper;
    /**
    *@author Fang
    *@create 2018/10/20 18:12
    *@desc  一個簡單的登入方法(不在乎業務  主要在意傳送mq)
    **/
    public boolean doLogin(TUser user, String ip) {

        try {
            //放入訊息佇列
            ActiveMQMapMessage message = new ActiveMQMapMessage();
            message.setString("name","張三");
            loginProducer.sendMessage(new ActiveMQQueue("user.log"),message);
            

        } catch (JMSException e) {
            e.printStackTrace();
        }

        return true;
    }
}

3.3消費者

在這裡插入圖片描述

LoginConsumer程式碼

package com.czxy.mq.consumer;

import org.apache.activemq.command.ActiveMQMapMessage;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

import javax.jms.JMSException;

/**
 * @author Fang
 * @create 2018-10-20 18:22
 * @desc 消費者
 **/
@Component
public class LoginConsumer {

    @JmsListener(destination = "user.log")
    public void loginUser(ActiveMQMapMessage message){
        try {
            String name = message.getString("name");
            System.out.println(name);
            System.out.println("已消費");
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

``