Skip to content

Commit 67760db

Browse files
author
Alexandru Scvortov
committed
Subscriber refactoring; explicit Acks
1 parent a5bf593 commit 67760db

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

projects/examples/client/Subscriber/src/examples/Subscriber.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,17 @@ public static int Main(string[] args) {
7171
}
7272

7373
string serverAddress = args[0];
74-
long msgCount = (args.Length > 1) ? Convert.ToInt64(args[1]) : 10;
74+
long msgCount = (args.Length > 1) ? int.Parse(args[1]) : 10;
7575
ConnectionFactory cf = new ConnectionFactory();
7676
cf.Address = serverAddress;
7777
using (IConnection conn = cf.CreateConnection()) {
7878
using (IModel ch = conn.CreateModel()) {
7979
string queueName = ensureQueue(ch);
8080

81+
/* We'll consume msgCount message twice: once
82+
using Subscription.Next() and once using the
83+
IEnumerator interface. So, we'll send out
84+
2*msgCount messages. */
8185
sendMessages(ch, queueName, 2*msgCount);
8286
using (Subscription sub = new Subscription(ch, queueName)) {
8387
blockingReceiveMessages(sub, msgCount);
@@ -107,6 +111,7 @@ private static void blockingReceiveMessages(Subscription sub, long msgCount) {
107111
i, messageText(sub.Next()));
108112
Console.WriteLine("Message {0} again: {1} (via Subscription.LatestEvent)",
109113
i, messageText(sub.LatestEvent));
114+
sub.Ack();
110115
}
111116

112117
Console.WriteLine("Done.\n");
@@ -121,6 +126,7 @@ private static void enumeratingReceiveMessages(Subscription sub, long msgCount)
121126
i, messageText(ev));
122127
if (++i == msgCount)
123128
break;
129+
sub.Ack();
124130
}
125131

126132
Console.WriteLine("Done.\n");
@@ -134,7 +140,7 @@ private static string ensureQueue(IModel ch) {
134140
Console.WriteLine("Creating a queue and binding it to amq.direct");
135141
string queueName = ch.QueueDeclare();
136142
ch.QueueBind(queueName, "amq.direct", queueName, false, null);
137-
Console.WriteLine("Done. Created queue {0}.\n", queueName);
143+
Console.WriteLine("Done. Created queue {0} and bound it to amq.direct.\n", queueName);
138144
return queueName;
139145
}
140146
}

0 commit comments

Comments
 (0)