修改
activemq.xml文件 指定共享文件夹 (directory)
修改端口,保证多台mq端口不一致
修改jtty端口,修改jetty.xml文件中
保证多台jetty端口不一致,否则会出现端口占用情况,
生产者代码:
public static void main(String[] args) throws JMSException, InterruptedException {
ConnectionFactory cFactory;
Connection connection;
Destination destination; // MessageProducer:消息发送者
MessageProducer producer; // TextMessage message;
Session session;
cFactory=new ActiveMQConnectionFactory
(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
"failover:(tcp://localhost:61616?wireFormat.maxInactivityDuration=0,tcp://localhost:61615?wireFormat.maxInactivityDuration=0)"); //failover中是多台mq的访问地址,用,分割
connection=cFactory.createConnection();
connection.start();
session= connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createTopic("STOCKS");
producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
for(int i=0;i<100;i++){
new Thread().sleep(1000);
TextMessage tmMessage= session.createTextMessage("我的发送者");
producer.send(tmMessage);
}
session.close();
connection.close();
}
消费者
ConnectionFactory cFactory;
Connection connection;
Topic destination; // MessageProducer:消息发送者
MessageConsumer consumer; // TextMessage message;
final Session session;
cFactory=new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "failover:(tcp://localhost:61616?wireFormat.maxInactivityDuration=0,tcp://localhost:61615?wireFormat.maxInactivityDuration=0)");
connection=cFactory.createConnection();
connection.setClientID("anpei");
connection.start();
session= connection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
destination = session.createTopic("STOCKS");
consumer = session.createDurableSubscriber(destination,"anpei");//持久化订阅
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage message1 = (TextMessage) message;
try {
System.out.println("接收到消息: " + message1.getText());
// session.commit();
} catch (JMSException e) {
e.printStackTrace();
}
}
});