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); }
/// <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)); }
/// <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); } }
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(); } }