Exemple #1
0
        public async Task SendMsgAsync(PushMsg pushMsg, IBus bus)
        {
            //一对一推送

            var       message = new Message <object>(pushMsg.sendMsg);
            IExchange ex      = null;

            //判断推送模式
            if (pushMsg.sendEnum == SendEnum.Direct)
            {
                ex = bus.Advanced.ExchangeDeclare(pushMsg.exchangeName, ExchangeType.Direct);
            }
            if (pushMsg.sendEnum == SendEnum.Fanout)
            {
                //广播订阅模式
                ex = bus.Advanced.ExchangeDeclare(pushMsg.exchangeName, ExchangeType.Fanout);
            }
            if (pushMsg.sendEnum == SendEnum.Topic)
            {
                //主题路由模式
                ex = bus.Advanced.ExchangeDeclare(pushMsg.exchangeName, ExchangeType.Topic);
            }

            await bus.Advanced.PublishAsync(ex, pushMsg.routeName, false, message)
            .ContinueWith(task =>
            {
                if (!task.IsCompleted && task.IsFaulted) //消息投递失败
                {
                    //记录投递失败的消息信息
                }
            });
        }
Exemple #2
0
        public void SendMsg(PushMsg pushMsg, IBus bus)
        {
            //一对一推送
            var basicProperties = new MessageProperties
            {
                //这里的deliveryMode=1代表不持久化,deliveryMode=2代表持久化。
                DeliveryMode = 2
            };

            var       message = new Message <object>(pushMsg.sendMsg, basicProperties);
            IExchange ex      = null;

            //判断推送模式
            if (pushMsg.sendEnum == SendEnum.Direct)
            {
                //Exchange持久化
                ex = bus.Advanced.ExchangeDeclare(pushMsg.exchangeName, ExchangeType.Direct, durable: true, autoDelete: false);
            }
            if (pushMsg.sendEnum == SendEnum.Fanout)
            {
                //广播订阅模式 持久化
                ex = bus.Advanced.ExchangeDeclare(pushMsg.exchangeName, ExchangeType.Fanout, durable: true, autoDelete: false);
            }
            if (pushMsg.sendEnum == SendEnum.Topic)
            {
                //主题路由模式 持久化
                ex = bus.Advanced.ExchangeDeclare(pushMsg.exchangeName, ExchangeType.Topic, durable: true, autoDelete: false);
            }

            //申明message 队列
            var queue = bus.Advanced.QueueDeclare(pushMsg.queueName, durable: true, exclusive: false, autoDelete: false);


            //绑定队列到交换并映射路由
            bus.Advanced.Bind(ex, queue, pushMsg.routeName);


            //bus.Advanced.Publish(ex, pushMsg.routeName, false, message);
            bus.Advanced.Publish(ex, pushMsg.routeName, false, message);
        }