0.12.0
Compatibility
| Pairs with | RabbitMQ Buffer |
| Product | Notiway Notify |
Installation
Environment Variables
Required
| Variable | Description |
|---|---|
Infra__Plugins__Broker__Name | Set to RabbitMQ |
Infra__Plugins__Broker__Version | Plugin version (e.g., 0.12.0) |
Infra__Plugins__Broker__Settings__ConnectionString | RabbitMQ connection string (e.g., amqp://guest:guest@localhost:5672) |
Optional
| Variable | Default | Description |
|---|---|---|
Infra__Plugins__Broker__Settings__ExchangeName | notiway-notifications | Name of the exchange used for broadcasting notifications |
Infra__Plugins__Broker__Settings__ExchangeType | fanout | Exchange type (fanout, direct, topic, headers) |
Infra__Plugins__Broker__Settings__Durable | true | Whether the exchange survives broker restarts |
Infrastructure
- Running RabbitMQ instance — v3.8+ recommended.
- The exchange is created automatically by the plugin on startup if it doesn’t exist. No manual setup needed.
Docker Compose
docker-compose.yml
services:
notiway:
image: notiway/notify:portable-0.6.0
ports:
- "5000:8080"
environment:
- Infra__Plugins__Broker__Name=RabbitMQ
- Infra__Plugins__Broker__Version=0.12.0
- Infra__Plugins__Broker__Settings__ConnectionString=amqp://guest:guest@rabbitmq:5672
rabbitmq:
image: rabbitmq:3-management-alpine
ports:
- "5672:5672"
- "15672:15672"Usage
Publish notifications to the RabbitMQ exchange from your backend. The message body must be the notification JSON.
var factory = new ConnectionFactory { Uri = new Uri("amqp://guest:guest@localhost:5672") };
using var connection = await factory.CreateConnectionAsync();
using var channel = await connection.CreateChannelAsync();
var body = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(notification));
await channel.BasicPublishAsync(exchange: "notiway-notifications", routingKey: "", body: body);const amqp = require("amqplib");
const conn = await amqp.connect("amqp://guest:guest@localhost:5672");
const ch = await conn.createChannel();
ch.publish("notiway-notifications", "", Buffer.from(JSON.stringify(notification)));import pika, json
connection = pika.BlockingConnection(pika.ConnectionParameters("localhost"))
channel = connection.channel()
channel.basic_publish(exchange="notiway-notifications", routing_key="", body=json.dumps(notification))ConnectionFactory factory = new ConnectionFactory();
factory.setUri("amqp://guest:guest@localhost:5672");
try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
String message = objectMapper.writeValueAsString(notification);
channel.basicPublish("notiway-notifications", "", null, message.getBytes(StandardCharsets.UTF_8));
}#include <amqpcpp.h>
#include <amqpcpp/libevent.h>
AMQP::TcpConnection connection(&handler, AMQP::Address("amqp://guest:guest@localhost:5672"));
AMQP::TcpChannel channel(&connection);
std::string message = /* serialize notification as JSON */;
channel.publish("notiway-notifications", "", message);