Пример #1
0
        public static IServiceCollection AddRabbitExchange(this IServiceCollection services, string exchangeName, string exchangeType, Action <IServiceProvider, IExchange> configure = null)
        {
            if (string.IsNullOrEmpty(exchangeName))
            {
                throw new ArgumentException(nameof(exchangeName));
            }

            if (string.IsNullOrEmpty(exchangeType))
            {
                throw new ArgumentException(nameof(exchangeType));
            }

            services.AddSingleton <IExchange>(p =>
            {
                var exchange = ExchangeBuilder.Create(exchangeName, exchangeType);
                if (configure != null)
                {
                    configure(p, exchange);
                }

                return(exchange);
            });

            return(services);
        }
Пример #2
0
        /// <summary>
        /// The route resolver builder impl.
        /// </summary>
        /// <param name="builder">
        /// The builder.
        /// </param>
        /// <returns>
        /// The <see cref="IRouteResolver"/>.
        /// </returns>
        private static IRouteResolver RouteResolverBuilderImpl(IRouteResolverBuilder builder)
        {
            string label = builder.Sender.Label.Name;

            ExchangeBuilder exchangeBuilder = Exchange.Named(label).Durable;

            exchangeBuilder = builder.Sender.Options.IsDelayed()
                                  ? exchangeBuilder.DelayedFanout
                                  : exchangeBuilder.Fanout;

            Exchange exchange = builder.Topology.Declare(exchangeBuilder);

            return(new StaticRouteResolver(exchange));
        }
Пример #3
0
        /// <summary>
        /// The subscription endpoint builder impl.
        /// </summary>
        /// <param name="builder">
        /// The builder.
        /// </param>
        /// <returns>
        /// The <see cref="ISubscriptionEndpoint"/>.
        /// </returns>
        private static ISubscriptionEndpoint SubscriptionEndpointBuilderImpl(ISubscriptionEndpointBuilder builder)
        {
            string label = builder.Receiver.Label.Name;

            string queueName = builder.Endpoint.Address + "." + label;

            Queue queue = builder.Topology.Declare(Queue.Named(queueName).Durable);

            ExchangeBuilder exchangeBuilder = Exchange.Named(label).Durable;

            exchangeBuilder = builder.Receiver.Options.IsDelayed()
                                  ? exchangeBuilder.DelayedFanout
                                  : exchangeBuilder.Fanout;

            Exchange exchange = builder.Topology.Declare(exchangeBuilder);

            builder.Topology.Bind(exchange, queue);

            return(builder.ListenTo(queue, exchange));
        }
        private IExchange BuildExchange(RabbitCommonOptions properties, string exchangeName)
        {
            try
            {
                var builder = new ExchangeBuilder(exchangeName, properties.ExchangeType);
                builder.Durable(properties.ExchangeDurable.GetValueOrDefault());
                if (properties.ExchangeAutoDelete.GetValueOrDefault())
                {
                    builder.AutoDelete();
                }

                if (properties.DelayedExchange.GetValueOrDefault())
                {
                    builder.Delayed();
                }

                return(builder.Build());
            }
            catch (Exception e)
            {
                throw new ProvisioningException("Failed to create exchange object", e);
            }
        }
Пример #5
0
        static void Main(string[] args)
        {
            try
            {
                jsonMessageList jsonList = new jsonMessageList();
                jsonList.iterateList();

                ShowBindings();

                //return;


                _mBuilder = new MainBuilder();
                _mBuilder.doWork();

                //Checking Binding to an Exchange - Surviving Channel
                ExchangeBuilder exBuilder  = new ExchangeBuilder();
                QueueBuilder    qBuilder   = new QueueBuilder();
                RPCBuilder      rPCBuilder = new RPCBuilder();

                exBuilder.createExchange(_mBuilder.Channel, "ChannelTimeoutChecker_EX");
                qBuilder.createQueue(_mBuilder.Channel, "ChannelTimeoutListener");
                qBuilder.createQueue(_mBuilder.Channel, "rpcReplyQueue");


                qBuilder.BindToExchange(_mBuilder.Channel, "ChannelTimeoutChecker_EX", "ChannelTimeoutListener");
                rPCBuilder.createRPC(_mBuilder.Channel, "rpcQueue");


                // for (int i = 0 ;i < 100;i++)
                // {
                //   ConnectionChannelChecking(i.ToString());
                //   if(i % 20 == 0)
                //   {
                //     ThreadPool.QueueUserWorkItem(SendToExchange,_mBuilder.Channel);
                //   }
                // }


                // ThreadPool.QueueUserWorkItem(SendToExchange,_mBuilder.Channel);
                // ThreadPool.QueueUserWorkItem(SendToExchange,_mBuilder.Channel);
                // ThreadPool.QueueUserWorkItem(SendToExchange,_mBuilder.Channel);
                // ThreadPool.QueueUserWorkItem(SendToExchange,_mBuilder.Channel);
                // ThreadPool.QueueUserWorkItem(SendToExchange,_mBuilder.Channel);

                // Thread.Sleep(60000);

                // Console.WriteLine("end thread");
                // _stopThread = true;
                // Thread.Sleep(2000);
                // Console.WriteLine("did it ended?");

                // RPC Call
                var rpcClient = new RpcClient();
                rpcClient.consumeReplyQueue(_mBuilder.Channel, "rpcReplyQueue");
                string result = rpcClient.Call("1", "rpcQueue");
                Console.WriteLine("RPC Result: " + result);


                //Ende RPC



                for (int i = 0; i < 10; i++)
                {
                    putMessages("WorkingQueue_" + i.ToString().PadLeft(2, '0'));
                }


                // Console.WriteLine("open a thread to listen to exchange");

                //ThreadPool.QueueUserWorkItem(listenToExchange,_mBuilder.Channel);

                // Consumer consumer1 = new Consumer();
                // consumer1.Subscribe("logs7even0","Consumer 1","..1..");

                //Consumer consumer2 = new Consumer();
                //consumer2.Subscribe("logs7even","Consumer 2","..2..");
                // consumer1.Subscribe("logs7even1","Consumer 2","..2..");


                // GetMessaging getMessages = new GetMessaging();
                // getMessages.GetMessage(_mBuilder.Channel, "WorkingQueue_03");

                // Console.WriteLine("i am really finished");

                // putExchangeMessages("logs7even0");



                // Thread.Sleep(500);
                // putExchangeMessages("logs7even0");
                // Thread.Sleep(500);
                // putExchangeMessages("logs7even0");
                // Thread.Sleep(500);
                // putExchangeMessages("logs7even0");

                // for(int i = 0; i < 50 ;i ++)
                // {
                //   putExchangeMessages("logs7even0");
                //   putExchangeMessages("logs7even1","Sending TOO SECOND");
                //   Thread.Sleep(500);
                // }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Fehler: " + ex.Message);
            }
            finally
            {
                Console.WriteLine("fertig");
                Console.ReadLine();
            }
        }