/// <summary> /// 创建一个普通的队列发布者 /// </summary> public void CreateCommonPublisher() { using (var connnection = factory.CreateConnection()) { using (var channel = connnection.CreateModel()) { channel.QueueDeclare(queueName, false, false, false, null); string message = QueueMessage; var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish("", queueName, false, null, body); #if DEBUG Console.WriteLine(" set {0}", message); #endif } } }
static void Main(string[] args) { Console.WriteLine("Hello World!"); var connectionFactory = new RabbitMQ.Client.ConnectionFactory(); var connection = connectionFactory.CreateConnection(); var channel = connection.CreateModel(); channel.QueueDeclare(queue: "identity.user", durable: true, exclusive: false, autoDelete: false, arguments: null); var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { var body = ea.Body.ToArray(); var message = Encoding.UTF8.GetString(body); Console.WriteLine(" [x] Received {0}", message); }; channel.BasicConsume(queue: "identity.user", consumerTag: "consumer", noLocal: false, arguments: null, exclusive: true, autoAck: true, consumer: consumer); Console.ReadLine(); }
public Task <(string, bool)> IsHealthy(HttpContext context, bool isDevelopment, CancellationToken cancellationToken = new CancellationToken()) { try { var factory = new Rmq.Client.ConnectionFactory(); factory.Uri = new Uri(_rabbitMqConnectionString); using (var connection = factory.CreateConnection()) { if (connection.IsOpen) { return(Task.FromResult((BeatPulseKeys.BEATPULSE_HEALTHCHECK_DEFAULT_OK_MESSAGE, true))); } } return(Task.FromResult((BeatPulseKeys.BEATPULSE_HEALTHCHECK_DEFAULT_ERROR_MESSAGE, false))); } catch (Exception ex) { var message = !isDevelopment ? string.Format(BeatPulseKeys.BEATPULSE_HEALTHCHECK_DEFAULT_ERROR_MESSAGE, Name) : $"Exception {ex.GetType().Name} with message ('{ex.Message}')"; return(Task.FromResult((message, false))); } }
public void Should_be_able_to_configure_EasyNetQ_to_allow_message_with_a_blank_type_field() { var are = new System.Threading.AutoResetEvent(false); var validation = new NullMessageValidator(); var bus = RabbitHutch.CreateBus("host=localhost", r => r.Register <IMessageValidationStrategy>(x => validation)); bus.Subscribe <MyMessage>("null_validation_test", message => { Console.Out.WriteLine("Got message: {0}", message.Text); are.Set(); }); // now use the basic client API to publish some JSON to the message type exchange ... var factory = new RabbitMQ.Client.ConnectionFactory { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { const string exchange = "EasyNetQ_Tests_MyMessage:EasyNetQ_Tests"; const string routingKey = "#"; const string bodyString = "{ Text: \"Hello from Mr Raw :)\" }"; var body = System.Text.Encoding.UTF8.GetBytes(bodyString); var properties = channel.CreateBasicProperties(); channel.BasicPublish(exchange, routingKey, properties, body); } are.WaitOne(1000); }
public void Should_be_able_to_configure_EasyNetQ_to_allow_message_with_a_blank_type_field() { var are = new System.Threading.AutoResetEvent(false); var validation = new NullMessageValidator(); var bus = RabbitHutch.CreateBus("host=localhost", r => r.Register<IMessageValidationStrategy>(x => validation)); bus.Subscribe<MyMessage>("null_validation_test", message => { Console.Out.WriteLine("Got message: {0}", message.Text); are.Set(); }); // now use the basic client API to publish some JSON to the message type exchange ... var factory = new RabbitMQ.Client.ConnectionFactory { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { const string exchange = "EasyNetQ_Tests_MyMessage:EasyNetQ_Tests"; const string routingKey = "#"; const string bodyString = "{ Text: \"Hello from Mr Raw :)\" }"; var body = System.Text.Encoding.UTF8.GetBytes(bodyString); var properties = channel.CreateBasicProperties(); channel.BasicPublish(exchange, routingKey, properties, body); } are.WaitOne(1000); }
private string RabbitConnectionChecker() { var connstr = Config.GetString("jobmoni:rabbitconn", ""); if (string.IsNullOrWhiteSpace(connstr)) { return(null); } try { RabbitMQ.Client.ConnectionFactory cf = new RabbitMQ.Client.ConnectionFactory(); cf.AutomaticRecoveryEnabled = true; cf.Uri = connstr; cf.RequestedConnectionTimeout = 5000; var currConn = cf.CreateConnection(); var md = currConn.CreateModel(); md.Close(); currConn.Close(); return(null); } catch (Exception ex) { return("rabbit状态异常!"); } }
static void Main(string[] args) { var connectionFactory = new RabbitMQ.Client.ConnectionFactory() { Password = Password, UserName = UserName, HostName = HostName }; var connection = connectionFactory.CreateConnection(); var model = connection.CreateModel(); }
public QueuePushHandle() { sqlDb = new SqlDb(QT.Entities.Server.ConnectionStringCrawler); factory = new RabbitMQ.Client.ConnectionFactory() { HostName = QT.Entities.Server.RabbitMQ_Host, Port = QT.Entities.Server.RabbitMQ_Port, UserName = QT.Entities.Server.RabbitMQ_User, Password = QT.Entities.Server.RabbitMQ_Pass }; connection = factory.CreateConnection(); chanel = connection.CreateModel(); }
public void Publish <TEvent>(TEvent @event) where TEvent : Domain.Core.Events.Event { try { var factory = new RabbitMQ.Client.ConnectionFactory { UserName = "******", Password = "******", HostName = "localhost", }; string eventTypeName = @event.TypeName; string queueName = eventTypeName; string exchangeName = string.Empty; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { channel.QueueDeclare (queue: queueName, durable: false, exclusive: false, autoDelete: false, arguments: null); string message = Newtonsoft.Json.JsonConvert.SerializeObject(@event); byte[] body = System.Text.Encoding.UTF8.GetBytes(message); channel.BasicPublish (exchange: exchangeName, routingKey: queueName, mandatory: false, basicProperties: null, body: body); System.Console.WriteLine($"Sent message: { message }"); } } } catch (System.Exception ex) { System.Console.WriteLine(ex.Message); } }
private void StartBasicConsume <TEvent>() where TEvent : Domain.Core.Events.Event { var factory = new RabbitMQ.Client.ConnectionFactory { UserName = "******", Password = "******", HostName = "localhost", DispatchConsumersAsync = true, }; string eventTypeName = typeof(TEvent).Name; string queueName = eventTypeName; string exchangeName = string.Empty; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { channel.QueueDeclare (queue: queueName, durable: false, exclusive: false, autoDelete: false, arguments: null); //var consumer = // new RabbitMQ.Client.Events.EventingBasicConsumer(model: channel); var consumer = new RabbitMQ.Client.Events.AsyncEventingBasicConsumer(model: channel); consumer.Received += Consumer_Received; channel.BasicConsume (queue: queueName, autoAck: true, consumerTag: string.Empty, // null -> Runtime Error! noLocal: false, exclusive: false, arguments: null, consumer: consumer); } } }
public AssessmentResponse Handle(AssessmentRequest message) { var theRabbit = new RabbitMQ.Client.ConnectionFactory(); theRabbit.Uri = "amqp://*****:*****@:5672/172.17.0.2"; using (var theRabbitConnection = theRabbit.CreateConnection()) { using (var model = theRabbitConnection.CreateModel()) { model.ExchangeDeclare("GraemesExchange", RabbitMQ.Client.ExchangeType.Direct, true, false, new Dictionary <string, object>()); var queueOk = model.QueueDeclare("GraemesQueue", true, false, false, new Dictionary <string, object>()); model.QueueBind("GraemesQueue", "GraemesExchange", "FooFoo", new Dictionary <string, object>()); model.BasicPublish("GraemesExchange", "FooFoo", false, null, System.Text.Encoding.UTF8.GetBytes("HELLO WORLD!!!")); } } return(new AssessmentResponse { Greeting = "Hello " + message.Name }); }
public bool IsQueueRunning(string busEndpoint, ILogger logger = null) { var factory = new RabbitMQ.Client.ConnectionFactory(); factory.Uri = new Uri(busEndpoint); try { var conn = factory.CreateConnection(); conn.Close(); conn.Dispose(); logger?.Information("QUEUE WORKING."); } catch (Exception ex) { logger?.Error("QUEUE DOWN. SERVICE DISABLED AUTOMATICALLY."); logger?.Error(ex, $"ERROR: {1}", ex); return(false); } return(true); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMediatR(Assembly.GetExecutingAssembly()); services.AddDbContext <ChicksDbContext>(options => { options.UseLazyLoadingProxies() .UseSqlServer(this.Configuration.GetConnectionString("ChicksSqlServer")); //.UseSqlServer("Data Source=sqldata;Initial Catalog=Chicks;User Id=sa;Password=Pass@word"); }, ServiceLifetime.Scoped); //The ideal is use a IChicksRepositoryProviderEF services.AddScoped <ChicksRepositoryProviderEF>(); services.AddScoped <IMongoClient>((serviceProvider) => new MongoClient(this.Configuration.GetConnectionString("ChicksMongo"))); services.AddScoped <IMongoDatabase>((serviceProvider) => { var client = serviceProvider.GetRequiredService <IMongoClient>(); return(client.GetDatabase(this.Configuration.GetValue <string>("MongoDatabaseSettings:DatabaseName"))); }); //The ideal is use a IChicksReporyProviderMongo services.AddScoped <ChicksRepositoryProviderMongo>(); // Maybe can be a good idea use a abstraction of more level to use rabbitmq as // https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/src/BuildingBlocks/EventBus/EventBusRabbitMQ services.AddScoped <RabbitMQ.Client.IConnection>(x => { var rabbitMQConfig = new Config.RabbitMQ(); this.Configuration.Bind("RabbitMQ", rabbitMQConfig); var connectionFactory = new RabbitMQ.Client.ConnectionFactory() { UserName = rabbitMQConfig.UserName, Password = rabbitMQConfig.Password, HostName = rabbitMQConfig.HostName }; return(connectionFactory.CreateConnection()); }); services.AddControllers(); services.AddSwaggerGen(config => { config.EnableAnnotations(); config.SwaggerDoc("v1", new OpenApiInfo { Title = "Chicks", Version = "v1.0.0" }); config.CustomSchemaIds((type) => type.FullName); var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); config.IncludeXmlComments(xmlPath); }); }