1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 /***
41 * The SimpleQueueReceiver class consists only of a main method,
42 * which fetches one or more messages from a queue using
43 * synchronous message delivery. Run this program in conjunction
44 * with SimpleQueueSender. Specify a queue name on the command
45 * line when you run the program.
46 */
47 package org.codehaus.activemq.demo;
48
49 import javax.jms.JMSException;
50 import javax.jms.Message;
51 import javax.jms.Queue;
52 import javax.jms.QueueConnection;
53 import javax.jms.QueueConnectionFactory;
54 import javax.jms.QueueReceiver;
55 import javax.jms.QueueSession;
56 import javax.jms.Session;
57 import javax.jms.TextMessage;
58 import javax.naming.Context;
59 import javax.naming.InitialContext;
60 import javax.naming.NamingException;
61
62 public class SimpleQueueReceiver {
63
64 /***
65 * Main method.
66 *
67 * @param args the queue used by the example
68 */
69 public static void main(String[] args) {
70 String queueName = null;
71 Context jndiContext = null;
72 QueueConnectionFactory queueConnectionFactory = null;
73 QueueConnection queueConnection = null;
74 QueueSession queueSession = null;
75 Queue queue = null;
76 QueueReceiver queueReceiver = null;
77 TextMessage message = null;
78
79
80
81
82 if (args.length != 1) {
83 System.out.println("Usage: java " +
84 "SimpleQueueReceiver <queue-name>");
85 System.exit(1);
86 }
87 queueName = new String(args[0]);
88 System.out.println("Queue name is " + queueName);
89
90
91
92
93
94 try {
95 jndiContext = new InitialContext();
96 }
97 catch (NamingException e) {
98 System.out.println("Could not create JNDI API " +
99 "context: " + e.toString());
100 System.exit(1);
101 }
102
103
104
105
106
107 try {
108 queueConnectionFactory = (QueueConnectionFactory)
109 jndiContext.lookup("QueueConnectionFactory");
110 queue = (Queue) jndiContext.lookup(queueName);
111 }
112 catch (NamingException e) {
113 System.out.println("JNDI API lookup failed: " +
114 e.toString());
115 System.exit(1);
116 }
117
118
119
120
121
122
123
124
125
126
127
128 try {
129 queueConnection =
130 queueConnectionFactory.createQueueConnection();
131 queueSession =
132 queueConnection.createQueueSession(false,
133 Session.AUTO_ACKNOWLEDGE);
134 queueReceiver = queueSession.createReceiver(queue);
135 queueConnection.start();
136 while (true) {
137 Message m = queueReceiver.receive(1);
138 if (m != null) {
139 if (m instanceof TextMessage) {
140 message = (TextMessage) m;
141 System.out.println("Reading message: " +
142 message.getText());
143 }
144 else {
145 break;
146 }
147 }
148 }
149 }
150 catch (JMSException e) {
151 System.out.println("Exception occurred: " +
152 e.toString());
153 }
154 finally {
155 if (queueConnection != null) {
156 try {
157 queueConnection.close();
158 }
159 catch (JMSException e) {
160 }
161 }
162 }
163 }
164 }