本文整理汇总了C#中NATS.Client.ConnectionFactory.Publish方法的典型用法代码示例。如果您正苦于以下问题:C# ConnectionFactory.Publish方法的具体用法?C# ConnectionFactory.Publish怎么用?C# ConnectionFactory.Publish使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NATS.Client.ConnectionFactory
的用法示例。
在下文中一共展示了ConnectionFactory.Publish方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TestAsyncSubHandlerAPI
public void TestAsyncSubHandlerAPI()
{
using (IConnection c = new ConnectionFactory().CreateConnection())
{
int received = 0;
EventHandler<MsgHandlerEventArgs> h = (sender, args) =>
{
Interlocked.Increment(ref received);
};
using (IAsyncSubscription s = c.SubscribeAsync("foo", h))
{
c.Publish("foo", null);
c.Flush();
Thread.Sleep(500);
}
using (IAsyncSubscription s = c.SubscribeAsync("foo", "bar", h))
{
c.Publish("foo", null);
c.Flush();
Thread.Sleep(500);
}
if (received != 2)
{
Assert.Fail("Received ({0}) != 2", received);
}
}
}
示例2: TestClosedConnections
public void TestClosedConnections()
{
IConnection c = new ConnectionFactory().CreateConnection();
ISyncSubscription s = c.SubscribeSync("foo");
c.Close();
// While we can annotate all the exceptions in the test framework,
// just do it manually.
UnitTestUtilities.testExpectedException(
() => { c.Publish("foo", null); },
typeof(NATSConnectionClosedException));
UnitTestUtilities.testExpectedException(
() => { c.Publish(new Msg("foo")); },
typeof(NATSConnectionClosedException));
UnitTestUtilities.testExpectedException(
() => { c.SubscribeAsync("foo"); },
typeof(NATSConnectionClosedException));
UnitTestUtilities.testExpectedException(
() => { c.SubscribeSync("foo"); },
typeof(NATSConnectionClosedException));
UnitTestUtilities.testExpectedException(
() => { c.SubscribeAsync("foo", "bar"); },
typeof(NATSConnectionClosedException));
UnitTestUtilities.testExpectedException(
() => { c.SubscribeSync("foo", "bar"); },
typeof(NATSConnectionClosedException));
UnitTestUtilities.testExpectedException(
() => { c.Request("foo", null); },
typeof(NATSConnectionClosedException));
UnitTestUtilities.testExpectedException(
() => { s.NextMessage(); },
typeof(NATSConnectionClosedException));
UnitTestUtilities.testExpectedException(
() => { s.NextMessage(100); },
typeof(NATSConnectionClosedException));
UnitTestUtilities.testExpectedException(
() => { s.Unsubscribe(); },
typeof(NATSConnectionClosedException));
UnitTestUtilities.testExpectedException(
() => { s.AutoUnsubscribe(1); },
typeof(NATSConnectionClosedException));
}
示例3: TestCustomObjectSerialization
public void TestCustomObjectSerialization()
{
using (IEncodedConnection c = new ConnectionFactory().CreateEncodedConnection())
{
Object mu = new Object();
SerializationTestObj origObj = new SerializationTestObj();
EventHandler<EncodedMessageEventArgs> eh = (sender, args) =>
{
// Ensure we blow up in the cast
SerializationTestObj so = (SerializationTestObj)args.ReceivedObject;
Assert.IsTrue(so.Equals(origObj));
lock (mu)
{
Monitor.Pulse(mu);
}
};
using (IAsyncSubscription s = c.SubscribeAsync("foo", eh))
{
lock (mu)
{
c.Publish("foo", new SerializationTestObj());
c.Flush();
Monitor.Wait(mu, 1000);
}
}
}
}
示例4: TestBasicReconnectFunctionality
public void TestBasicReconnectFunctionality()
{
Options opts = utils.DefaultTestOptions;
opts.Url = "nats://localhost:22222";
opts.MaxReconnect = 2;
opts.ReconnectWait = 1000;
Object testLock = new Object();
Object msgLock = new Object();
opts.DisconnectedEventHandler = (sender, args) =>
{
lock (testLock)
{
Monitor.Pulse(testLock);
}
};
opts.ReconnectedEventHandler = (sender, args) =>
{
// NOOP
};
NATSServer ns = utils.CreateServerOnPort(22222);
using (IConnection c = new ConnectionFactory().CreateConnection(opts))
{
IAsyncSubscription s = c.SubscribeAsync("foo");
s.MessageHandler += (sender, args) =>
{
lock (msgLock)
{
Monitor.Pulse(msgLock);
}
};
s.Start();
c.Flush();
lock (testLock)
{
ns.Shutdown();
Assert.True(Monitor.Wait(testLock, 100000));
}
c.Publish("foo", Encoding.UTF8.GetBytes("Hello"));
// restart the server.
using (ns = utils.CreateServerOnPort(22222))
{
lock (msgLock)
{
c.Flush(50000);
Assert.True(Monitor.Wait(msgLock, 10000));
}
Assert.True(c.Stats.Reconnects == 1);
}
}
}
示例5: TestClientAutoUnsub
public void TestClientAutoUnsub()
{
using (IConnection c = new ConnectionFactory().CreateConnection())
{
long received = 0;
int max = 10;
using (ISyncSubscription s = c.SubscribeSync("foo"))
{
s.AutoUnsubscribe(max);
for (int i = 0; i < max * 2; i++)
{
c.Publish("foo", null);
}
c.Flush();
Thread.Sleep(100);
try
{
while (true)
{
s.NextMessage(0);
received++;
}
}
catch (NATSBadSubscriptionException) { /* ignore */ }
Assert.IsTrue(received == max);
Assert.IsFalse(s.IsValid);
}
}
}
示例6: Run
public void Run(string[] args)
{
Stopwatch sw = null;
parseArgs(args);
banner();
Options opts = ConnectionFactory.GetDefaultOptions();
opts.Url = url;
using (IConnection c = new ConnectionFactory().CreateConnection(opts))
{
sw = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
c.Publish(subject, payload);
}
c.Flush();
sw.Stop();
System.Console.Write("Published {0} msgs in {1} seconds ", count, sw.Elapsed.TotalSeconds);
System.Console.WriteLine("({0} msgs/second).",
(int)(count / sw.Elapsed.TotalSeconds));
printStats(c);
}
}
示例7: TestServerAutoUnsub
public void TestServerAutoUnsub()
{
using (IConnection c = new ConnectionFactory().CreateConnection())
{
long received = 0;
int max = 10;
using (IAsyncSubscription s = c.SubscribeAsync("foo"))
{
s.MessageHandler += (sender, arg) =>
{
System.Console.WriteLine("Received msg.");
received++;
};
s.AutoUnsubscribe(max);
s.Start();
for (int i = 0; i < (max * 2); i++)
{
c.Publish("foo", Encoding.UTF8.GetBytes("hello"));
}
c.Flush();
Thread.Sleep(500);
if (received != max)
{
Assert.Fail("Recieved ({0}) != max ({1})",
received, max);
}
Assert.IsFalse(s.IsValid);
}
}
}
示例8: TestSyncSubscribe
public void TestSyncSubscribe()
{
using (IConnection c = new ConnectionFactory().CreateConnection())
{
using (ISyncSubscription s = c.SubscribeSync("foo"))
{
c.Publish("foo", omsg);
Msg m = s.NextMessage(1000);
if (compare(omsg, m) == false)
Assert.Fail("Messages are not equal.");
}
}
}
示例9: TestUnsubscribe
public void TestUnsubscribe()
{
int count = 0;
int max = 20;
using (IConnection c = new ConnectionFactory().CreateConnection())
{
using (IAsyncSubscription s = c.SubscribeAsync("foo"))
{
Boolean unsubscribed = false;
asyncSub = s;
//s.MessageHandler += UnsubscribeAfterCount;
s.MessageHandler += (sender, args) =>
{
count++;
System.Console.WriteLine("Count = {0}", count);
if (count == max)
{
asyncSub.Unsubscribe();
lock (mu)
{
unsubscribed = true;
Monitor.Pulse(mu);
}
}
};
s.Start();
max = 20;
for (int i = 0; i < max; i++)
{
c.Publish("foo", null, null);
}
Thread.Sleep(100);
c.Flush();
lock (mu)
{
if (!unsubscribed)
{
Monitor.Wait(mu, 5000);
}
}
}
if (count != max)
Assert.Fail("Received wrong # of messages after unsubscribe: {0} vs {1}", count, max);
}
}
示例10: TestStats
public void TestStats()
{
using (IConnection c = new ConnectionFactory().CreateConnection())
{
byte[] data = Encoding.UTF8.GetBytes("The quick brown fox jumped over the lazy dog");
int iter = 10;
for (int i = 0; i < iter; i++)
{
c.Publish("foo", data);
}
c.Flush(1000);
IStatistics stats = c.Stats;
Assert.AreEqual(iter, stats.OutMsgs);
Assert.AreEqual(iter * data.Length, stats.OutBytes);
c.ResetStats();
// Test both sync and async versions of subscribe.
IAsyncSubscription s1 = c.SubscribeAsync("foo");
s1.MessageHandler += (sender, arg) => { };
s1.Start();
ISyncSubscription s2 = c.SubscribeSync("foo");
for (int i = 0; i < iter; i++)
{
c.Publish("foo", data);
}
c.Flush(1000);
stats = c.Stats;
Assert.AreEqual(2 * iter, stats.InMsgs);
Assert.AreEqual(2 * iter * data.Length, stats.InBytes);
}
}
示例11: TestSyncReplyArg
public void TestSyncReplyArg()
{
using (IConnection c = new ConnectionFactory().CreateConnection())
{
using (ISyncSubscription s = c.SubscribeSync("foo"))
{
c.Publish("foo", "bar", null);
c.Flush(30000);
Msg m = s.NextMessage(1000);
if ("bar".Equals(m.Reply) == false)
Assert.Fail("Expected \"bar\", received: " + m);
}
}
}
示例12: TestLargeSubjectAndReply
public void TestLargeSubjectAndReply()
{
using (IConnection c = new ConnectionFactory().CreateConnection())
{
String subject = "";
for (int i = 0; i < 1024; i++)
{
subject += "A";
}
String reply = "";
for (int i = 0; i < 1024; i++)
{
reply += "A";
}
using (IAsyncSubscription s = c.SubscribeAsync(subject))
{
Object testLock = new Object();
s.MessageHandler += (sender, args) =>
{
if (!subject.Equals(args.Message.Subject))
Assert.Fail("Invalid subject received.");
if (!reply.Equals(args.Message.Reply))
Assert.Fail("Invalid subject received.");
lock (testLock)
{
Monitor.Pulse(testLock);
}
};
s.Start();
c.Publish(subject, reply, null);
c.Flush();
lock (testLock)
{
Assert.IsTrue(Monitor.Wait(testLock, 1000));
}
}
}
}
示例13: TestFlushInHandler
public void TestFlushInHandler()
{
using (IConnection c = new ConnectionFactory().CreateConnection())
{
using (IAsyncSubscription s = c.SubscribeAsync("foo"))
{
byte[] response = Encoding.UTF8.GetBytes("I will help you.");
s.MessageHandler += (sender, args) =>
{
try
{
c.Flush();
System.Console.WriteLine("Success.");
}
catch (Exception e)
{
Assert.Fail("Unexpected exception: " + e);
}
lock (mu)
{
Monitor.Pulse(mu);
}
};
s.Start();
lock (mu)
{
c.Publish("foo", Encoding.UTF8.GetBytes("Hello"));
Monitor.Wait(mu);
}
}
}
}
示例14: TestRequestNoBody
public void TestRequestNoBody()
{
using (IConnection c = new ConnectionFactory().CreateConnection())
{
using (IAsyncSubscription s = c.SubscribeAsync("foo"))
{
byte[] response = Encoding.UTF8.GetBytes("I will help you.");
s.MessageHandler += (sender, args) =>
{
c.Publish(args.Message.Reply, response);
};
s.Start();
Msg m = c.Request("foo", null, 50000);
if (!compare(m.Data, response))
{
Assert.Fail("Response isn't valid");
}
}
}
}
示例15: TestSlowAsyncSubscriber
public void TestSlowAsyncSubscriber()
{
Options opts = ConnectionFactory.GetDefaultOptions();
opts.SubChannelLength = 10;
using (IConnection c = new ConnectionFactory().CreateConnection(opts))
{
using (IAsyncSubscription s = c.SubscribeAsync("foo"))
{
Object mu = new Object();
s.MessageHandler += (sender, args) =>
{
lock (mu)
{
Console.WriteLine("Subscriber Waiting....");
Assert.IsTrue(Monitor.Wait(mu, 20000));
Console.WriteLine("Subscriber done.");
}
};
s.Start();
for (int i = 0; i < (opts.SubChannelLength + 100); i++)
{
c.Publish("foo", null);
}
int flushTimeout = 1000;
Stopwatch sw = new Stopwatch();
sw.Start();
bool flushFailed = false;
try
{
c.Flush(flushTimeout);
}
catch (Exception)
{
flushFailed = true;
}
sw.Stop();
lock (mu)
{
Monitor.Pulse(mu);
}
if (sw.ElapsedMilliseconds < flushTimeout)
{
Assert.Fail("elapsed ({0}) < timeout ({1})",
sw.ElapsedMilliseconds, flushTimeout);
}
Assert.IsTrue(flushFailed);
}
}
}