ActiveMQ 使用demo
阿新 • • 發佈:2018-10-31
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();
}
}
}
``