dd
public class JMSConsumer implements MessageListener{ private ConnectionFactory connectionFactory; private boolean transacted = false; public JMSConsumer(ConnectionFactory connectionFactory) throws JMSException, IOException { this.connectionFactory = connectionFactory; } public void consumeQueueMessage(String queueName, MessageListener messageListener) throws JMSException { Connection connection = null; Session session = null; connection = this.connectionFactory.createConnection(); session = connection .createSession(transacted, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(queueName); MessageConsumer consumer = session.createConsumer(destination); connection.start(); System.out.println("Consumer:->Begin listening..."); /** * 如果想主动的去接受消息,而不用消息监听的话,把consumer.setMessageListener(this) 改为Message * message = consumer.receive(), 手动去调用MessageConsumer的receive方法即可. */ // 开始监听 consumer.setMessageListener(messageListener); // 异步监听 } public void consumeTopicMessage(String topicName, MessageListener messageListener) throws JMSException { Connection connection = null; Session session = null; connection = this.connectionFactory.createConnection(); session = connection .createSession(transacted, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createTopic(topicName); MessageConsumer consumer = session.createConsumer(destination); connection.start(); System.out.println("Consumer:->Begin listening..."); /** * 如果想主动的去接受消息,而不用消息监听的话,把consumer.setMessageListener(this) 改为Message * message = consumer.receive(), 手动去调用MessageConsumer的receive方法即可. */ // 开始监听 consumer.setMessageListener(messageListener); // 异步监听 } public void onMessage(Message message) { // TODO Auto-generated method stub System.out.println("message:" + message.toString()); }
public class JMSProducer { private ConnectionFactory connectionFactory; private boolean transacted = false; public JMSProducer(ConnectionFactory connectionFactory) throws JMSException, IOException { this.connectionFactory = connectionFactory; } /** * 发送基于队列消息 * * @param message * @param queueName * @throws JMSException * @throws JMSException * @throws Exception */ public void produceQueueMessage(String message, String queueName) throws JMSException { Connection connection = null; Session session = null; try { connection = this.connectionFactory.createConnection(); session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(queueName); MessageProducer producer = session.createProducer(destination); connection.start(); System.out.println("produceQueueMessage message = " + message); Message msg = session.createTextMessage(message); producer.send(msg); producer.close(); System.out.println("Producer:->Message sent complete!"); } finally { if (session != null) session.close(); if (connection != null) connection.close(); } } public void produceQueueMessage(File file, String queueName) throws JMSException { Connection connection = null; Session session = null; try { connection = this.connectionFactory.createConnection(); session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(queueName); MessageProducer producer = session.createProducer(destination); System.out.println("produceQueueMessage file Message = " + file.getName()); byte[] bytes = this.getFileByte(file); connection.start(); BytesMessage msg = session.createBytesMessage(); msg.writeBytes(bytes); producer.send(msg); producer.close(); System.out.println("Producer:->Message sent complete!"); } finally { if (session != null) session.close(); if (connection != null) connection.close(); } } /** * 发送基于主题消息 * * @param message * @param subject * @throws JMSException * * @throws Exception */ public void produceTopicMessage(String message, String topicName) throws JMSException { Connection connection = null; Session session = null; try { connection = this.connectionFactory.createConnection(); session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createTopic(topicName); MessageProducer producer = session.createProducer(destination); connection.setClientID("12345"); connection.start(); System.out.println("produceTopicMessage message = " + message); Message msg = session.createTextMessage(message); producer.send(msg); producer.close(); System.out.println("Producer:->Message sent complete!"); } finally { if (session != null) session.close(); if (connection != null) connection.close(); } } public void produceTopicMessage(File file, String topicName) throws JMSException { Connection connection = null; Session session = null; try { connection = this.connectionFactory.createConnection(); session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createTopic(topicName); MessageProducer producer = session.createProducer(destination); connection.setClientID("12345"); connection.start(); System.out.println("produceTopicMessage file Message = " + file.getName()); byte[] bytes = this.getFileByte(file); connection.start(); BytesMessage msg = session.createBytesMessage(); msg.writeBytes(bytes); producer.send(msg); producer.close(); System.out.println("Producer:->Message sent complete!"); }finally { if (session != null) session.close(); if (connection != null) connection.close(); } } private byte[] getFileByte(File file){ byte[] buffer = null; FileInputStream fin = null; try { fin = new FileInputStream(file); buffer = new byte[fin.available()]; fin.read(buffer); } catch (Exception e) { e.printStackTrace(); } finally { try { fin.close(); } catch (IOException e) { e.printStackTrace(); } } return buffer; }
class QueueMessageListener implements MessageListener { public void onMessage(Message reciveMessage) { // TODO Auto-generated method stub try { if (reciveMessage instanceof TextMessage) { TextMessage new_name = (TextMessage) reciveMessage; String text = new_name.getText(); System.out .println("QueueMessageListener onMessage:" + text); System.out.println(""); assertEquals(text, message); } else if (reciveMessage instanceof BytesMessage) { BytesMessage bytesMessage = (BytesMessage) reciveMessage; FileOutputStream fileOutputStream; File file = new File(recieveFileDir + sendFileName); fileOutputStream = new FileOutputStream(file); byte[] byteContent = readBytesContent(bytesMessage); fileOutputStream.write(byteContent); System.out.println("接收到消息 length:" + byteContent.length); System.out.println(); fileOutputStream.close(); } } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }