首先下载activitimq,官网在这里->http://activemq.apache.org/,选择自己喜欢的版本(楼主用的是5.7.0),解压就可以用啦,
打开解压缩后的文件,点击activemq.bat,浏览器输入->http://localhost:8161/admin,就可以看到你期待已久的界面了,如果需要密码,默认的用户名和密码是admin,如果你想修改密码,跟我来->apache-activemq-5.7.0\conf\jetty.xml,修改
org.apache.activemq
activemq-core
5.7.0
org.apache.activemq
activemq-broker
5.10.0
org.apache.activemq
activemq-client
5.14.0
消息发送端:
public static void main(String[] args) {
//连接工厂
ConnectionFactory connectionFactory;
//JMS 客户端到JMS Provider 的连接
Connection connection;
//一个发送或接收消息的线程
Session session;
// Destination :消息的目的地;消息发送给谁.
Destination destination;
// MessageProducer:消息发送者
MessageProducer messageProducer;
connectionFactory=new
ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try {
connection=connectionFactory.createConnection();
connection.start();
session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//这里会自动创建Queue
destination=session.createQueue("secondqueue");
messageProducer=session.createProducer(destination);
//设置生产者的模式,有两种可选
//DeliveryMode.PERSISTENT 当activemq关闭的时候,队列数据将会被保存
//DeliveryMode.NON_PERSISTENT 当activemq关闭的时候,队列里面的数据将会被清空
messageProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
//设置消息过期时间
messageProducer.setTimeToLive(10000);
sendMessage(session, messageProducer);
// session.commit();
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
public static void sendMessage(Session session,MessageProducer producer){
TextMessage message;
try {
for(int i=0;i<10;i++){
message = session.createTextMessage("测试发送的消息"+i);
producer.send(message);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} catch (JMSException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//连接工厂
ConnectionFactory connectionFactory;
//JMS 客户端到JMS Provider 的连接
Connection connection;
//一个发送或接收消息的线程
Session session;
// Destination :消息的目的地;消息发送给谁.
Destination destination;
// MessageProducer:消息消费者
MessageConsumer consumer;
connectionFactory=new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try {
connection=connectionFactory.createConnection();
connection.start();
session=connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
destination=session.createQueue("firstqueue");
consumer=session.createConsumer(destination);
while(true){
TextMessage message=(TextMessage) consumer.receive();
System.out.println(message.getText());
message.acknowledge();
}
} catch (JMSException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//连接工厂
ConnectionFactory connectionFactory;
//JMS 客户端到JMS Provider 的连接
Connection connection;
//一个发送或接收消息的线程
Session session;
// Destination :消息的目的地;消息发送给谁.
Destination destination;
// MessageProducer:消息消费者
MessageConsumer consumer;
connectionFactory=new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616");
try {
connection=connectionFactory.createConnection();
connection.start();
session=connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
destination=session.createQueue("firstqueue");
consumer=session.createConsumer(destination);
consumer.setMessageListener(new MessageListener() {
//变了这个地方,但是有一个问题,当我们程序很累很累的时候,如果还自动去获取消息,会不会太不人道了
//因此我们可以判断服务器不累的时候再去获取消息,下面一句代码的意思是超过定义的时间,就不再继续获取