public void SendMessage(string exchangeName, IQueueObject queueObject) { if (string.IsNullOrWhiteSpace(queueObject?.Message)) { throw new Exception("Ошибка отправки сообщения." + Environment.NewLine + "Нельзя отправить пустое текстовое сообщение."); } var body = Encoding.UTF8.GetBytes(queueObject.Message); if (body == null) { throw new Exception("Ошибка отправки сообщения." + Environment.NewLine + "Нельзя отправить пустое текстовое сообщение."); } using (var connection = NewConnect()) { using (var model = connection.CreateModel()) { var basicProperties = model.CreateBasicProperties(); basicProperties.DeliveryMode = 2; basicProperties.Headers = queueObject.Headers; basicProperties.AppId = _rabbitMQSettings.AppId; model.BasicPublish(exchangeName, queueObject.RoutingKey, basicProperties, body); } } }
public async Task Update(IQueueObject track, int volume, bool paused, bool looping, bool modify = true) { if (track == null) { return; } if (!modify) { this.Embed = this.BuildEmbed(track, volume, paused, looping); return; } if (this.Message == null) { return; } this.Embed = this.BuildEmbed(track, volume, paused, looping); if ((DateTime.Now - this.LastUpdate).TotalSeconds < 2) { this.LastUpdate = DateTime.Now; return; } this.LastUpdate = DateTime.Now; await this.Message.ModifyAsync(prop => prop.Embed = this.Embed); }
public async Task <IUserMessage> SendPlayerAsync(IEnergizePlayer ply, IQueueObject obj = null, IChannel chan = null) { obj = obj ?? ply.CurrentTrack; if (ply.TrackPlayer == null) { ply.TrackPlayer = new TrackPlayer(ply.VoiceChannel.GuildId); await ply.TrackPlayer.Update(obj, ply.Volume, ply.IsPaused, ply.IsLooping, false); } else { await ply.TrackPlayer.Update(obj, ply.Volume, ply.IsPaused, ply.IsLooping, false); await ply.TrackPlayer.DeleteMessage(); } if (obj == null) { return(null); } bool isRadio = obj is RadioTrack; ply.TrackPlayer.Message = await this.MessageSender.SendAsync(chan ?? ply.TextChannel, ply.TrackPlayer.Embed); this.AddPlayerReactions(ply.TrackPlayer.Message, isRadio); return(ply.TrackPlayer.Message); }
public BusShard(IAzureStorage resource, IQueueObject sender) { if (null == resource) { throw new ArgumentNullException("resource"); } if (null == sender) { throw new ArgumentNullException("sender"); } this.resource = resource; this.sender = sender; }
private Embed BuildEmbed(IQueueObject obj, int volume, bool paused, bool looping) { switch (obj) { case ILavaTrack track: return(this.BuildTrackEmbed(track, volume, paused, looping)); case RadioTrack radio: return(this.BuildRadioEmbed(radio, volume, paused)); default: return(this.BuildUnknownEmbed(obj, volume, paused, looping)); } }
private Embed BuildUnknownEmbed(IQueueObject obj, int volume, bool paused, bool looping) { EmbedBuilder builder = new EmbedBuilder(); builder .WithColorType(EmbedColorType.Warning) .WithDescription("🎶 Playing unknown type of content") .WithField("ID", obj.Id) .WithField("Volume", $"{volume}%") .WithField("Paused", paused) .WithField("Looping", looping) .WithFooter("music player"); return(builder.Build()); }
private void SendMessage(YambrEmailSettings setting, IQueueObject queueObject) { if (string.IsNullOrWhiteSpace(queueObject?.Message)) { throw new Exception(SR.T("Ошибка отправки сообщения.") + Environment.NewLine + SR.T("Нельзя отправить пустое текстовое сообщение.")); } var body = Encoding.UTF8.GetBytes(queueObject.Message); if (setting == null) { throw new Exception(SR.T("Не переданы необходимые параметры.")); } if (body == null) { throw new Exception(SR.T("Ошибка отправки сообщения.") + Environment.NewLine + SR.T("Нельзя отправить пустое текстовое сообщение.")); } try { var connectionFactory = new ConnectionFactory { HostName = setting.HostName, VirtualHost = setting.VirtualHost, Protocol = Protocols.AMQP_0_9_1, Port = setting.Port, UserName = setting.UserName, Password = setting.Password }; var connectionFactory2 = connectionFactory; using (var connection = connectionFactory2.CreateConnection()) { using (var model = connection.CreateModel()) { var basicProperties = model.CreateBasicProperties(); basicProperties.DeliveryMode = 2; basicProperties.Headers = queueObject.Headers; basicProperties.AppId = "ELMA"; model.BasicPublish(QueueConstants.ExchangeMailBox, queueObject.RoutingKey, basicProperties, body); } } } catch (Exception ex) { Logger.Error(ex.Message, ex); throw; } }
public void SendMessage(IQueueObject message) { try { var rMqSetting = Locator.GetServiceNotNull <YambrEmailSettingsModule>().Settings; if (rMqSetting == null) { return; } Logger.Debug( SR.T("Отправляется сообщение в очередь: {0}. Адрес подключения: {1}. Имя очереди: {2}.", QueueConstants.ExchangeMailBox, GetHost(rMqSetting), QueueConstants.RoutingKeyMailBoxCmdDownload)); SendMessage(rMqSetting, message); } catch (Exception ex) { throw new RabbitException("Ошибка при попытке отправить сообщение в очередь", ex); } }