public Task StartAsync(CancellationToken cancellationToken) { _configuration.ConfigureRabbit(); // Create a channel for this reader _channel = _connection.CreateChannel(); // Create a consumer for the queue. This is a method implemented by RabbitMQ.Client to easily subscribe to incoming messages on this queue var consumer = new EventingBasicConsumer(_channel); // Add an event handler for receiving messages on the queue consumer.Received += (evt, evt2) => { if (HandleMessage(evt2)) { // Acknowledge this message as handled _channel.BasicAck(evt2.DeliveryTag, false); } else { // Reject the message and put it back on the queue for trying again. _channel.BasicReject(evt2.DeliveryTag, true); } }; // On the provided queue name, register our consumer as a consumer. _channel.BasicConsume(_queueName.Name, false, consumer); return(Task.CompletedTask); }
public Task PublishMessageAsync <T>(string messageType, T value) { using var channel = _connection.CreateChannel(); var message = channel.CreateBasicProperties(); message.ContentType = "application/json"; message.DeliveryMode = 2; // Add a MessageType header, this part is crucial for our solution because it is our way of distinguishing messages message.Headers = new Dictionary <string, object> { ["MessageType"] = messageType }; var body = JsonSerializer.SerializeToUtf8Bytes(value); // Publish this without a routing key to the rabbitmq broker channel.BasicPublish("TestApp", string.Empty, message, body); return(Task.CompletedTask); }
public void ConfigureRabbit() { if (!configured) { var channel = _connection.CreateChannel(); channel.ExchangeDeclare("mealz", "fanout"); channel.QueueDeclare("Authentication Service", false, false); channel.QueueDeclare("User Service", false, false); channel.QueueDeclare("Recipe Service", false, false); channel.QueueDeclare("Moderation Service", false, false); channel.QueueBind("Authentication Service", "mealz", "UserRegistered"); channel.QueueBind("Authentication Service", "mealz", "UserChanged"); channel.QueueBind("Authentication Service", "mealz", "UserDeleted"); channel.QueueBind("Authentication Service", "mealz", "UserRoleUpdated"); channel.QueueBind("Authentication Service", "mealz", "AdminAdded"); channel.QueueBind("Recipe Service", "mealz", "RemoveRecipe"); configured = true; } }
public void ConfigureRabbit() { if (_configured) { return; } var channel = _conn.CreateChannel(); channel.ExchangeDeclare(Exchange, "fanout"); channel.QueueDeclare("TweetService", false, false); channel.QueueDeclare("AuthenticationService", false, false); channel.QueueDeclare("UserService", false, false); channel.QueueDeclare("FileManagementService", false, false); channel.QueueDeclare("FollowService", false, false); channel.QueueDeclare("TimelineService", false, false); channel.QueueDeclare("ModerationService", false, false); channel.QueueDeclare("LikeService", false, false); channel.QueueDeclare("TrendingService", false, false); //QueueBind(Service to which the message will be send, Exchange, Message class names) channel.QueueBind("TweetService", Exchange, "NewProfileMessage"); channel.QueueBind("AuthenticationService", Exchange, "NewUserMessage"); channel.QueueBind("AuthenticationService", Exchange, "EmailChangedMessage"); channel.QueueBind("TweetService", Exchange, "ProfileChangedMessage"); channel.QueueBind("UserService", Exchange, "ProfileImageChangedMessage"); channel.QueueBind("TweetService", Exchange, "ProfileImageChangedMessage"); channel.QueueBind("UserService", Exchange, "AddFollowerMessage"); channel.QueueBind("UserService", Exchange, "RemoveFollowerMessage"); channel.QueueBind("TimelineService", Exchange, "NewPostedTweet"); channel.QueueBind("TimelineService", Exchange, "NewProfileMessage"); channel.QueueBind("TimelineService", Exchange, "AddFollowerMessage"); channel.QueueBind("TimelineService", Exchange, "ProfileChangedMessage"); channel.QueueBind("TimelineService", Exchange, "RemoveFollowerMessage"); channel.QueueBind("TimelineService", Exchange, "ProfileImageChangedMessage"); channel.QueueBind("ModerationService", Exchange, "NewProfanityTweet"); channel.QueueBind("ModerationService", Exchange, "NewProfileMessage"); channel.QueueBind("ModerationService", Exchange, "ProfileChangedMessage"); channel.QueueBind("ModerationService", Exchange, "ProfileImageChangedMessage"); channel.QueueBind("LikeService", Exchange, "ForgetUserMessage"); channel.QueueBind("TweetService", Exchange, "ForgetUserMessage"); channel.QueueBind("FollowService", Exchange, "ForgetUserMessage"); channel.QueueBind("TimelineService", Exchange, "ForgetUserMessage"); channel.QueueBind("ModerationService", Exchange, "ForgetUserMessage"); channel.QueueBind("AuthenticationService", Exchange, "ForgetUserMessage"); channel.QueueBind("LikeService", Exchange, "UnApproveTweetMessage"); channel.QueueBind("TweetService", Exchange, "UnApproveTweetMessage"); channel.QueueBind("TimelineService", Exchange, "UnApproveTweetMessage"); channel.QueueBind("LikeService", Exchange, "DeleteTweetMessage"); channel.QueueBind("TimelineService", Exchange, "DeleteTweetMessage"); channel.QueueBind("ModerationService", Exchange, "DeleteTweetMessage"); channel.QueueBind("TrendingService", Exchange, "NewTopicTweetMessage"); channel.QueueBind("AuthenticationService", Exchange, "NewAdminMessage"); channel.QueueBind("AuthenticationService", Exchange, "UpgradeUserToAdminMessage"); _configured = true; }