6262[ ` send.java ` ] ( http://github.com/rabbitmq/rabbitmq-tutorials/blob/master/java/send.java ) ,
6363we need some classes imported:
6464
65- <table  class =" highlighttable " ><tr ><td  class =" linenos " ><div  class =" linenodiv " ><pre ><code  class =" java " >1
66- 2
67- 3
68- 4</code ></pre ></div ></td ><td  class =" code " ><div  class =" highlight " ><pre ><span  class =" kn " >import</span > <span  class =" nn " >com.rabbitmq.client.ConnectionFactory</span ><span  class =" o " >;</span >
69- <span  class =" kn " >import</span > <span  class =" nn " >com.rabbitmq.client.Connection</span ><span  class =" o " >;</span >
70- <span  class =" kn " >import</span > <span  class =" nn " >com.rabbitmq.client.Channel</span ><span  class =" o " >;</span >
71- <span  class =" kn " >import</span > <span  class =" nn " >java.io.IOException</span ><span  class =" o " >;</span >
72- </pre ></div >
73- </td ></tr ></table >
65+ <div ><pre ><code  class =' java ' >import com.rabbitmq.client.ConnectionFactory;
66+ import com.rabbitmq.client.Connection;
67+ import com.rabbitmq.client.Channel;
68+ import java.io.IOException;</code ></pre ></div >
69+ 
7470
7571then we can create a connection to the server:
7672
77- <table  class =" highlighttable " ><tr ><td  class =" linenos " ><div  class =" linenodiv " ><pre ><code  class =" java " > 6
78-  7
79-  8
80-  9
81- 10</code ></pre ></div ></td ><td  class =" code " ><div  class =" highlight " ><pre ><span  class =" kd " >public</span > <span  class =" kd " >class</span > <span  class =" nc " >send</span > <span  class =" o " >{</span >
82-  <span  class =" kd " >public</span > <span  class =" kd " >static</span > <span  class =" kt " >void</span > <span  class =" nf " >main</span ><span  class =" o " >(</span ><span  class =" n " >String</span ><span  class =" o " >[ ] </span > <span  class =" n " >argv</span ><span  class =" o " >)</span > <span  class =" o " >{</span >
83-  <span  class =" k " >try</span > <span  class =" o " >{</span >
84-  <span  class =" n " >Connection</span > <span  class =" n " >conn</span > <span  class =" o " >=</span > <span  class =" k " >new</span > <span  class =" n " >ConnectionFactory</span ><span  class =" o " >().</span ><span  class =" na " >newConnection</span ><span  class =" o " >();</span >
85-  <span  class =" n " >Channel</span > <span  class =" n " >chan</span > <span  class =" o " >=</span > <span  class =" n " >conn</span ><span  class =" o " >.</span ><span  class =" na " >createChannel</span ><span  class =" o " >();</span >
86- </pre ></div >
87- </td ></tr ></table >
73+ <div ><pre ><code  class =' java ' >public class send {
74+  public static void main(String[ ]  argv) {
75+  try {
76+  Connection conn = new ConnectionFactory().newConnection();
77+  Channel chan = conn.createChannel();</code ></pre ></div >
78+ 
8879
8980The connection abstracts the socket connection, and takes care of
9081protocol version negotiation and authentication and so on for us.
@@ -94,21 +85,18 @@ things done resides.
9485To send, we must declare a queue for us to send to; then we can publish a message
9586to the queue:
9687
97- <table  class =" highlighttable " ><tr ><td  class =" linenos " ><div  class =" linenodiv " ><pre ><code  class =" java " >11
98- 12</code ></pre ></div ></td ><td  class =" code " ><div  class =" highlight " ><pre > <span  class =" n " >chan</span ><span  class =" o " >.</span ><span  class =" na " >queueDeclare</span ><span  class =" o " >(</span ><span  class =" s " >" ; hello" ; </span ><span  class =" o " >,</span > <span  class =" kc " >false</span ><span  class =" o " >,</span > <span  class =" kc " >false</span ><span  class =" o " >,</span > <span  class =" kc " >false</span ><span  class =" o " >,</span > <span  class =" kc " >null</span ><span  class =" o " >);</span >
99-  <span  class =" n " >chan</span ><span  class =" o " >.</span ><span  class =" na " >basicPublish</span ><span  class =" o " >(</span ><span  class =" s " >" ;" ; </span ><span  class =" o " >,</span > <span  class =" s " >" ; hello" ; </span ><span  class =" o " >,</span > <span  class =" kc " >null</span ><span  class =" o " >,</span > <span  class =" s " >" ; Hello World!" ; </span ><span  class =" o " >.</span ><span  class =" na " >getBytes</span ><span  class =" o " >());</span >
100- </pre ></div >
101- </td ></tr ></table >
88+ <div ><pre ><code  class =' java ' >chan.queueDeclare(" ; hello" ; , false, false, false, null);
89+   chan.basicPublish("", "hello", null, "Hello World!".getBytes());</code></pre></div> 
90+ 
10291
10392Declaring a queue is idempotent; it will be created if it's doesn't
10493exist already. The message contents is a byte array, so you can encode
10594whatever you like there.
10695
10796Lastly, we close the channel and the connection;
10897
109- <table  class =" highlighttable " ><tr ><td  class =" linenos " ><div  class =" linenodiv " ><pre ><code  class =" java " >13</code ></pre ></div ></td ><td  class =" code " ><div  class =" highlight " ><pre > <span  class =" n " >conn</span ><span  class =" o " >.</span ><span  class =" na " >close</span ><span  class =" o " >();</span >
110- </pre ></div >
111- </td ></tr ></table >
98+ <div ><pre ><code  class =' java ' >conn.close();</code ></pre ></div >
99+ 
112100
113101Since many of these method calls can throw an ` IOException ` , we wrap
114102the whole thing in a ` try...catch ` . [ Here's the whole of the class] ( http://github.com/rabbitmq/rabbitmq-tutorials/blob/master/java/send.java ) .
@@ -127,17 +115,12 @@ keep it running to listen for messages and print them out.
127115
128116The code (in [ ` recv.java ` ] ( http://github.com/rabbitmq/rabbitmq-tutorials/blob/master/java/recv.java ) ) has almost the same imports as ` send ` :
129117
130- <table  class =" highlighttable " ><tr ><td  class =" linenos " ><div  class =" linenodiv " ><pre ><code  class =" java " >1
131- 2
132- 3
133- 4
134- 5</code ></pre ></div ></td ><td  class =" code " ><div  class =" highlight " ><pre ><span  class =" kn " >import</span > <span  class =" nn " >com.rabbitmq.client.ConnectionFactory</span ><span  class =" o " >;</span >
135- <span  class =" kn " >import</span > <span  class =" nn " >com.rabbitmq.client.Connection</span ><span  class =" o " >;</span >
136- <span  class =" kn " >import</span > <span  class =" nn " >com.rabbitmq.client.Channel</span ><span  class =" o " >;</span >
137- <span  class =" kn " >import</span > <span  class =" nn " >com.rabbitmq.client.QueueingConsumer</span ><span  class =" o " >;</span >
138- <span  class =" kn " >import</span > <span  class =" nn " >java.io.IOException</span ><span  class =" o " >;</span >
139- </pre ></div >
140- </td ></tr ></table >
118+ <div ><pre ><code  class =' java ' >import com.rabbitmq.client.ConnectionFactory;
119+ import com.rabbitmq.client.Connection;
120+ import com.rabbitmq.client.Channel;
121+ import com.rabbitmq.client.QueueingConsumer;
122+ import java.io.IOException;</code ></pre ></div >
123+ 
141124
142125The extra ` QueueingConsumer `  is a class we'll use to buffer the
143126messages pushed to us by the server.
@@ -146,19 +129,13 @@ Setting up is the same as the sender; we open a connection and a
146129channel, and declare the queue from which we're going to consume.
147130Note this matches up with the queue ` send `  publishes to.
148131
149- <table  class =" highlighttable " ><tr ><td  class =" linenos " ><div  class =" linenodiv " ><pre ><code  class =" java " > 7
150-  8
151-  9
152- 10
153- 11
154- 12</code ></pre ></div ></td ><td  class =" code " ><div  class =" highlight " ><pre ><span  class =" kd " >public</span > <span  class =" kd " >class</span > <span  class =" nc " >recv</span > <span  class =" o " >{</span >
155-  <span  class =" kd " >public</span > <span  class =" kd " >static</span > <span  class =" kt " >void</span > <span  class =" nf " >main</span ><span  class =" o " >(</span ><span  class =" n " >String</span ><span  class =" o " >[ ] </span > <span  class =" n " >argv</span ><span  class =" o " >)</span > <span  class =" o " >{</span >
156-  <span  class =" k " >try</span > <span  class =" o " >{</span >
157-  <span  class =" n " >Connection</span > <span  class =" n " >conn</span > <span  class =" o " >=</span > <span  class =" k " >new</span > <span  class =" n " >ConnectionFactory</span ><span  class =" o " >().</span ><span  class =" na " >newConnection</span ><span  class =" o " >();</span >
158-  <span  class =" n " >Channel</span > <span  class =" n " >chan</span > <span  class =" o " >=</span > <span  class =" n " >conn</span ><span  class =" o " >.</span ><span  class =" na " >createChannel</span ><span  class =" o " >();</span >
159-  <span  class =" n " >chan</span ><span  class =" o " >.</span ><span  class =" na " >queueDeclare</span ><span  class =" o " >(</span ><span  class =" s " >" ; hello" ; </span ><span  class =" o " >,</span > <span  class =" kc " >false</span ><span  class =" o " >,</span > <span  class =" kc " >false</span ><span  class =" o " >,</span > <span  class =" kc " >false</span ><span  class =" o " >,</span > <span  class =" kc " >null</span ><span  class =" o " >);</span >
160- </pre ></div >
161- </td ></tr ></table >
132+ <div ><pre ><code  class =' java ' >public class recv {
133+  public static void main(String[ ]  argv) {
134+  try {
135+  Connection conn = new ConnectionFactory().newConnection();
136+  Channel chan = conn.createChannel();
137+  chan.queueDeclare(" ; hello" ; , false, false, false, null);</code ></pre ></div >
138+ 
162139
163140Note that we declare the queue here, as well. Because we might start
164141the receiver before the sender, we want to make sure the queue exists
@@ -169,19 +146,13 @@ queue. Since it will push us messages asynchronously, we provide a
169146callback in the form of an object that will buffer the messages until
170147we're ready to use them. That is what ` QueueingConsumer `  does.
171148
172- <table  class =" highlighttable " ><tr ><td  class =" linenos " ><div  class =" linenodiv " ><pre ><code  class =" java " >13
173- 14
174- 15
175- 16
176- 17
177- 18</code ></pre ></div ></td ><td  class =" code " ><div  class =" highlight " ><pre > <span  class =" n " >QueueingConsumer</span > <span  class =" n " >consumer</span > <span  class =" o " >=</span > <span  class =" k " >new</span > <span  class =" n " >QueueingConsumer</span ><span  class =" o " >(</span ><span  class =" n " >chan</span ><span  class =" o " >);</span >
178-  <span  class =" n " >chan</span ><span  class =" o " >.</span ><span  class =" na " >basicConsume</span ><span  class =" o " >(</span ><span  class =" s " >" ; hello" ; </span ><span  class =" o " >,</span > <span  class =" kc " >true</span ><span  class =" o " >,</span > <span  class =" n " >consumer</span ><span  class =" o " >);</span >
179-  <span  class =" k " >while</span > <span  class =" o " >(</span ><span  class =" kc " >true</span ><span  class =" o " >)</span > <span  class =" o " >{</span >
180-  <span  class =" n " >QueueingConsumer</span ><span  class =" o " >.</span ><span  class =" na " >Delivery</span > <span  class =" n " >delivery</span > <span  class =" o " >=</span > <span  class =" n " >consumer</span ><span  class =" o " >.</span ><span  class =" na " >nextDelivery</span ><span  class =" o " >();</span >
181-  <span  class =" n " >System</span ><span  class =" o " >.</span ><span  class =" na " >out</span ><span  class =" o " >.</span ><span  class =" na " >println</span ><span  class =" o " >(</span ><span  class =" k " >new</span > <span  class =" n " >String</span ><span  class =" o " >(</span ><span  class =" n " >delivery</span ><span  class =" o " >.</span ><span  class =" na " >getBody</span ><span  class =" o " >()));</span >
182-  <span  class =" o " >}</span >
183- </pre ></div >
184- </td ></tr ></table >
149+ <div ><pre ><code  class =' java ' >QueueingConsumer consumer = new QueueingConsumer(chan);
150+   chan.basicConsume("hello", true, consumer); 
151+   while (true) { 
152+   QueueingConsumer.Delivery delivery = consumer.nextDelivery(); 
153+   System.out.println(new String(delivery.getBody())); 
154+   }</code></pre></div> 
155+ 
185156
186157` QueueingConsumer.nextDelivery() `  blocks until another message has
187158been delivered from the server.
0 commit comments