activemq:进入bin目录启动,localhost:8161访问activemq客户端
1.发送消息给activemq客户端:
String url = "tcp://ip地址:61616";
String user = ActiveMQConnection.DEFAULT_USER; //默认用户名admin
String password = ActiveMQConnection.DEFAULT_PASSWORD; //默认密码admin
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(user, password, url); //创建连接acrivemq的工厂
Connection conn = factory.createConnection();
conn.start(); //开启连接
Session session = conn.createSession(true,Session.AUTO_ACKNOWLEDGE);
Destination destination=session.createQueue("wy"); //目的队列
MessageProducer producer = session.createProducer(destination); // 创建消息生产者
TextMessage message = session.createTextMessage(); //发送消息到activemq中
for(int i=0;i<10;i++) {
message.setText("product"+i);
producer.send(message);
System.out.println("product"+message.getText());
}
session.commit(); //消息提交,一定需要
conn.close();
2.客户端消费activemq的消息
String url = "failover:tcp://ip地址:61616"
String user = ActiveMQConnectionFactory.DEFAULT_USER;
String password = ActiveMQConnectionFactory.DEFAULT_PASSWORD;
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(user, password, url);
Connection conn = factory.createConnection();
conn.start();
Session session = conn.createSession(Boolean.FALSE,Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("wy");
MessageConsumer consumer = session.createConsumer(destination );
consumer.setMessageListener(new MessageListener() { //消息监听
@Override
public void onMessage(Message message) {
if(message!=null) {
TextMessage msg = (TextMessage)message;
try {
System.out.println("xiaofei"+msg.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
//接收消息的另外一种方式
consumer.receive();
activemq作为消息存储的中间件,可以减少数据实时存储数据库的压力