コード例 #1
0
        async Task Multiple_plugins_should_run_in_order()
        {
            var messageSender   = new MessageSender(TestUtility.NamespaceConnectionString, TestConstants.NonPartitionedQueueName);
            var messageReceiver = new MessageReceiver(TestUtility.NamespaceConnectionString, TestConstants.NonPartitionedQueueName, ReceiveMode.ReceiveAndDelete);

            try
            {
                var firstPlugin  = new FirstSendPlugin();
                var secondPlugin = new SecondSendPlugin();

                messageSender.RegisterPlugin(firstPlugin);
                messageSender.RegisterPlugin(secondPlugin);

                var sendMessage = new Message(Encoding.UTF8.GetBytes("Test message"));
                await messageSender.SendAsync(sendMessage);

                var receivedMessage = await messageReceiver.ReceiveAsync(1, TimeSpan.FromMinutes(1));

                var firstSendPluginUserProperty  = receivedMessage.First().UserProperties["FirstSendPlugin"];
                var secondSendPluginUserProperty = receivedMessage.First().UserProperties["SecondSendPlugin"];

                Assert.True((bool)firstSendPluginUserProperty);
                Assert.True((bool)secondSendPluginUserProperty);
            }
            finally
            {
                await messageSender.CloseAsync();

                await messageReceiver.CloseAsync();
            }
        }
コード例 #2
0
        async Task Unregistering_plugin_should_complete_with_plugin_set()
        {
            var messageReceiver = new MessageReceiver(TestUtility.NamespaceConnectionString, TestConstants.NonPartitionedQueueName, ReceiveMode.ReceiveAndDelete);
            var firstPlugin     = new FirstSendPlugin();

            messageReceiver.RegisterPlugin(firstPlugin);
            messageReceiver.UnregisterPlugin(firstPlugin.Name);
            await messageReceiver.CloseAsync();
        }
コード例 #3
0
        async Task Registering_plugin_multiple_times_should_throw()
        {
            var messageReceiver = new MessageReceiver(TestUtility.NamespaceConnectionString, TestConstants.NonPartitionedQueueName, ReceiveMode.ReceiveAndDelete);
            var firstPlugin     = new FirstSendPlugin();
            var secondPlugin    = new FirstSendPlugin();

            messageReceiver.RegisterPlugin(firstPlugin);
            Assert.Throws <ArgumentException>(() => messageReceiver.RegisterPlugin(secondPlugin));
            await messageReceiver.CloseAsync();
        }
コード例 #4
0
        async Task Unregistering_plugin_should_complete_with_plugin_set()
        {
            await ServiceBusScope.UsingQueueAsync(partitioned : false, sessionEnabled : false, async queueName =>
            {
                var messageReceiver = new MessageReceiver(TestUtility.NamespaceConnectionString, queueName, ReceiveMode.ReceiveAndDelete);
                try
                {
                    var firstPlugin = new FirstSendPlugin();

                    messageReceiver.RegisterPlugin(firstPlugin);
                    messageReceiver.UnregisterPlugin(firstPlugin.Name);
                }
                finally
                {
                    await messageReceiver.CloseAsync();
                }
            });
        }
コード例 #5
0
        async Task Registering_plugin_multiple_times_should_throw()
        {
            await ServiceBusScope.UsingQueueAsync(partitioned : false, sessionEnabled : false, async queueName =>
            {
                var messageReceiver = new MessageReceiver(TestUtility.NamespaceConnectionString, queueName, ReceiveMode.ReceiveAndDelete);
                try
                {
                    var firstPlugin  = new FirstSendPlugin();
                    var secondPlugin = new FirstSendPlugin();

                    messageReceiver.RegisterPlugin(firstPlugin);
                    Assert.Throws <ArgumentException>(() => messageReceiver.RegisterPlugin(secondPlugin));
                }
                finally
                {
                    await messageReceiver.CloseAsync();
                }
            });
        }