Apache ActiveMQ 5.5 : http://activemq.apache.org/
1. 使用ActiveMQ异步处理消息: http://www.iteye.com/topic/275045
SendMessage.java
package sample;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class SendMessage {
private static final String url = "tcp://localhost:61616";
private static final String QUEUE_NAME = "choice.queue";
protected String expectedBody = "<hello>world!</hello>";
public void sendMessage() throws JMSException {
Connection connection = null;
try {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
connection = (Connection) connectionFactory.createConnection();
connection.start();
Session session = (Session) connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(QUEUE_NAME);
MessageProducer producer = session.createProducer(destination);
TextMessage message = session.createTextMessage(expectedBody);
message.setStringProperty("headname", "remoteB");
producer.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SendMessage sndMsg = new SendMessage();
try {
sndMsg.sendMessage();
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
}
ReceiveMessage.java
package sample;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class ReceiveMessage {
private static final String url = "tcp://localhost:61616";
private static final String QUEUE_NAME = "choice.queue";
public void receiveMessage() {
Connection connection = null;
try {
try {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
connection = connectionFactory.createConnection();
} catch (Exception e) {
System.out.println(e.toString());
}
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(QUEUE_NAME);
MessageConsumer consumer = session.createConsumer(destination);
consumeMessagesAndClose(connection, session, consumer);
} catch (Exception e) {
System.out.println(e.toString());
}
}
protected void consumeMessagesAndClose(Connection connection, Session session, MessageConsumer consumer) throws JMSException {
for (int i = 0; i < 1;) {
Message message = consumer.receive(1000);
if (message != null) {
i++;
onMessage(message);
}
}
System.out.println("Closing connection");
consumer.close();
session.close();
connection.close();
}
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
TextMessage txtMsg = (TextMessage) message;
String msg = txtMsg.getText();
System.out.println("Received: " + msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
ReceiveMessage rm = new ReceiveMessage();
rm.receiveMessage();
}
}
2.实现简单文件传输: http://topmanopensource.iteye.com/blog/1065630
StreamMsgProducer.java
package sample;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.StreamMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class StreamMsgProducer {
public void send(File file) {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
Connection conn = null;
try {
conn = factory.createConnection();
conn.start();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination queue = session.createQueue("streamMsg");
MessageProducer producer = session.createProducer(queue);
InputStream in = new FileInputStream(file);
byte[] buffer = new byte[2048];
int c = -1;
while ((c = in.read(buffer)) > 0) {
StreamMessage smsg = session.createStreamMessage();
smsg.writeBytes(buffer, 0, c);
producer.send(smsg);
System.out.println("send: " + c);
}
in.close();
} catch (JMSException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
File file = new File("D:\\send.txt");
new StreamMsgProducer().send(file);
}
}
StreamMsgConsumer.java
package sample;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.StreamMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class StreamMsgConsumer {
public void receive() {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
Connection conn = null;
try {
conn = factory.createConnection();
conn.start();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination queue = session.createQueue("streamMsg");
MessageConsumer consumer = session.createConsumer(queue);
OutputStream out = new FileOutputStream("D:\\receive.txt");
byte[] buffer = new byte[2048];
while (true) {
Message msg = consumer.receive(5000);
if (msg == null) {
break;
}
if (msg instanceof StreamMessage) {
StreamMessage smsg = (StreamMessage) msg;
int c = smsg.readBytes(buffer);
out.write(buffer, 0, c);
System.out.println("Receive: " + c);
}
}
out.close();
} catch (JMSException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
new StreamMsgConsumer().receive();
}
}
其他资料:
http://www.iteye.com/topic/234101
http://topmanopensource.iteye.com/blog/1070096
http://jinguo.iteye.com/blog/240187
http://xiongzhenhui.iteye.com/blog/1172329