Inheritance: INamingConventions
コード例 #1
0
		public async Task Should_Publish_Message_On_Error_Exchange_If_Subscribe_Throws_Exception()
		{
			/* Setup */
			var conventions = new NamingConventions();
			var client = BusClientFactory.CreateDefault(null, ioc => ioc.AddSingleton(c => conventions));
			var recieveTcs = new TaskCompletionSource<HandlerExceptionMessage>();
			MessageContext firstRecieved = null;
			MessageContext secondRecieved = null;
			client.SubscribeAsync<HandlerExceptionMessage>((message, context) =>
			{
				secondRecieved = context;
				recieveTcs.TrySetResult(message);
				return Task.FromResult(true);
			}, c => c
				.WithExchange(e => e.WithName(conventions.ErrorExchangeNamingConvention()))
				.WithQueue(q => q.WithArgument(QueueArgument.MessageTtl, (int)TimeSpan.FromSeconds(1).TotalMilliseconds))
				.WithRoutingKey("#"));
			client.SubscribeAsync<BasicMessage>((message, context) =>
			{
				firstRecieved = context;
				throw new Exception("Oh oh!");
			});
			var originalMsg = new BasicMessage { Prop = "Hello, world" };

			/* Test */
			client.PublishAsync(originalMsg);
			await recieveTcs.Task;

			/* Assert */
			Assert.Equal(((BasicMessage)recieveTcs.Task.Result.Message).Prop, originalMsg.Prop);
			Assert.NotNull(firstRecieved);
			Assert.NotNull(secondRecieved);
			Assert.Equal(firstRecieved.GlobalRequestId, secondRecieved.GlobalRequestId);
		}
コード例 #2
0
		public async Task Should_Be_Able_To_Subscibe_To_Pure_Json_Message()
		{
			var conventions = new NamingConventions();
			using (
				var client =
					TestClientFactory.CreateNormal(ioc => ioc.AddSingleton<INamingConventions>(c => conventions)))
			{
				/* Setup */
				var tcs = new TaskCompletionSource<BasicMessage>();
				var subscription = client.SubscribeAsync<BasicMessage>((message, context) =>
				{
					tcs.TrySetResult(message);
					return Task.FromResult(true);
				});
				var uniqueValue = Guid.NewGuid().ToString();
				var jsonMsg = JsonConvert.SerializeObject(new BasicMessage {Prop = uniqueValue});

				/* Test */
				TestChannel.BasicPublish(
					conventions.ExchangeNamingConvention(typeof(BasicMessage)),
					conventions.QueueNamingConvention(typeof(BasicMessage)),
					true,
					null,
					Encoding.UTF8.GetBytes(jsonMsg));
				await tcs.Task;

				/* Assert */
				Assert.Equal(uniqueValue, tcs.Task.Result.Prop);
			}
		}