public PooledObjectFactory(IRabbitMQSetting rabbitMQSetting)
 {
     Check.NotNullOrWhiteSpace(rabbitMQSetting.Url, "Url");
     _connectionFactory = new ConnectionFactory
     {
         Uri = new Uri(rabbitMQSetting.Url),
         AutomaticRecoveryEnabled = true
     };
 }
Пример #2
0
        public RabbitMQRemoteEventPublisher(
            IPoolManager poolManager,
            IRabbitMQSetting rabbitMQSetting,
            IRemoteEventSerializer remoteEventSerializer
            )
        {
            _remoteEventSerializer = remoteEventSerializer;

            _connectionPool = poolManager.NewPool <IConnection>()
                              .InitialSize(rabbitMQSetting.InitialSize)
                              .MaxSize(rabbitMQSetting.MaxSize)
                              .WithFactory(new PooledObjectFactory(rabbitMQSetting))
                              .Instance();
        }
Пример #3
0
        public IRabbitMQConfiguration Configure(IRabbitMQSetting setting)
        {
            _configuration.IocManager.IocContainer.Register(
                Component.For <IRemoteEventPublisher>()
                .ImplementedBy <RabbitMQRemoteEventPublisher>()
                .DependsOn(Castle.MicroKernel.Registration.Dependency.OnValue <IRabbitMQSetting>(setting))
                .Named(Guid.NewGuid().ToString())
                .LifestyleSingleton()
                .IsDefault()
                );

            _configuration.IocManager.IocContainer.Register(
                Component.For <IRemoteEventSubscriber>()
                .ImplementedBy <RabbitMQRemoteEventSubscriber>()
                .DependsOn(Castle.MicroKernel.Registration.Dependency.OnValue <IRabbitMQSetting>(setting))
                .Named(Guid.NewGuid().ToString())
                .LifestyleSingleton()
                .IsDefault()
                );

            return(this);
        }
Пример #4
0
 public PooledObjectFactory(IRabbitMQSetting rabbitMQSetting)
 {
     _connectionFactory = new ConnectionFactory
     {
         AutomaticRecoveryEnabled = true
     };
     if (!string.IsNullOrWhiteSpace(rabbitMQSetting.Url))
     {
         var uri = new Uri(rabbitMQSetting.Url);
         _connectionFactory.Uri = uri;
     }
     else
     {
         _connectionFactory.HostName = rabbitMQSetting.HostName;
         _connectionFactory.Port     = rabbitMQSetting.Port;     //端口号
         _connectionFactory.UserName = rabbitMQSetting.UserName; //用户账号
         _connectionFactory.Password = rabbitMQSetting.Password; //用户密码
     }
     _connectionFactory.Protocol = Protocols.DefaultProtocol;
     _connectionFactory.AutomaticRecoveryEnabled = true;            //自动重连
     _connectionFactory.RequestedFrameMax        = UInt32.MaxValue;
     _connectionFactory.RequestedHeartbeat       = UInt16.MaxValue; //心跳超时时间
 }
Пример #5
0
 public RabbitMQRemoteEventSubscriber(IRabbitMQSetting rabbitMQSetting)
 {
     _factory             = new PooledObjectFactory(rabbitMQSetting);
     _dictionary          = new ConcurrentDictionary <string, IModel>();
     _connectionsAcquired = new List <IConnection>();
 }