public string ConvertToDoc([FromBody] ConvertTask task) { task.TaskType = "Doc"; MqHelper.Publish(task); return(task.TaskId); }
public FMain() { InitializeComponent(); //初始化消息队列 MqHelper.InitGetMessage(); }
public static void WebInit() { MqHelper.Subscribe(); string path = Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data"), "words"); Directory.CreateDirectory(path); }
public string GetBestQueue() { using (var sqlconn = new SQLiteConnection(EnvironmentHelper.GetValue(DictionaryConstants.DatabaseConnectionString))) { sqlconn.Open(); try { //SELECT * FROM MachinesConsume WHERE var sqlcom = new SQLiteCommand($"Select MIN(CpuUsage) CpuUsage, MachineName from MachinesConsume", sqlconn); var reader = sqlcom.ExecuteReader(); string machineName = Environment.MachineName; while (reader.Read()) { machineName = reader.GetString(1); } return(MqHelper.OrchestratorQueueName(machineName)); } finally { sqlconn.Close(); sqlconn.Dispose(); } } }
private static void Bot_OnMessage(object sender, global::Telegram.Bot.Args.MessageEventArgs e) { //Chamar API pra cadastrar o pedido { ChatMq chat; if (ActiveChats.ContainsKey(e.Message.Chat.Id)) { chat = ActiveChats[e.Message.Chat.Id]; } else { chat = new ChatMq() { ChatId = e.Message.Chat.Id, QueueName = MqHelper.GetQueueChatName(e.Message.Chat.Id) }; ActiveChats.Add(e.Message.Chat.Id, chat); } Console.WriteLine($"Getting sender information:\n\tChatId: {chat.ChatId}\n\tLastUsedQueue: {chat.QueueName}\n\tLastAppUse: {chat.LastQuery}"); chat.LastQuery = DateTime.Now; //Criando o conteudo para a Azure function var str = new StringContent(JsonConvert.SerializeObject(new { name = e.Message.Text, queue = chat.QueueName }), Encoding.Default, "application/json"); //Cadastrar uma fila pra escutar até voltar as imagens mq.CreateQueue(chat.QueueName); mq.ConfigureConsumeQueueListener(chat.QueueName, false, sendResultSheets); //Chamando a Azure Function _client.PostAsync(TelegramConstants.OrquestradorGetSheetUrl, str).GetAwaiter().GetResult(); } }
private readonly List <RunningCrawler> runningCrawlers = new List <RunningCrawler>(); //Buscar do banco caso morra public Worker(ILogger <Worker> logger, IMessageQueueConnection mq, IDatabase db) { _logger = logger; _mq = mq; _db = db; _mq.CreateQueue(MqHelper.OrchestratorQueueName()); _mq.ConfigureConsumeQueueListener(MqHelper.OrchestratorQueueName(), true, CreateCrawler); }
/// <summary> /// 添加到队列 /// </summary> public static void AddQueue(User user) { //创建一个channel using (var channel = MqHelper.GetNewConnection().CreateModel()) { //json序列化 var bytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(user)); channel.BasicPublish(String.Empty, QueueName, null, bytes); } }
static void Main(string[] args) { using (var channel = MqHelper.GetConnection().CreateModel()) // 创建通道 { //定义队列 channel.QueueDeclare(queue: "NET", durable: true, exclusive: false, autoDelete: false, arguments: null); //公平分配(在处理并确认前一条消息之前,不要向队列发送新消息) channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false); //事件基本消费者 var consumber = new EventingBasicConsumer(channel); consumber.Received += (sender, e) => { try { var user = JsonConvert.DeserializeObject <User>(Encoding.UTF8.GetString(e.Body)); //Incr var database = RedisManager.Instance.GetDatabase(); var flag = database.StringIncrement(user.Id.ToString()); if (flag == 1) { //用户的第一次请求,为有效请求 //下面开始入库,这里使用List做为模拟 Console.WriteLine($"{user.Id}标识为{flag} {user.Name}"); DapperHelper.Insert(new Person() { Id2 = user.Id.ToString(), Name = user.Name }); //添加入库标识 database.StringIncrement($"{user.Id.ToString()}入库"); Console.WriteLine("入库成功"); } //用户的N次请求,为无效请求,消息被消费 channel.BasicAck(e.DeliveryTag, false); } catch (Exception ex) { Console.WriteLine(ex.Message); } }; Console.WriteLine("开始工作"); //启动消费者 设置为手动应答消息 channel.BasicConsume("NET", false, consumber); Console.ReadKey(); } }
/// <summary> /// 消费队列 /// </summary> public static void ConsumeQueue() { using (var channel = MqHelper.GetConnection().CreateModel()) { channel.QueueDeclare("NET", true, false, false, null); var consumber = new EventingBasicConsumer(channel); channel.BasicQos(0, 1, false); consumber.Received += (sender, e) => { try { var user = JsonConvert.DeserializeObject <User>(Encoding.UTF8.GetString(e.Body)); var flag = RedisHelper.GetRedisClient().Incr(user.Id.ToString()); if (flag == 1) { //File.AppendAllText($"{System.AppDomain.CurrentDomain.BaseDirectory}/bin/info.txt", $"有效!{user.Id}的标识为{flag},姓名为{user.Name}\r\n"); //用户的第一次请求,为有效请求 //下面开始入库,这里使用List做为模拟 var dbContext = Model1.GetDbContext(); dbContext.Person.Add(new Person() { Id2 = user.Id.ToString(), Name = user.Name }); Task ts = dbContext.SaveChangesAsync(); ts.Wait(); //添加入库标识 RedisHelper.GetRedisClient().Incr($"{user.Id.ToString()}入库"); } //else // File.AppendAllText($"{System.AppDomain.CurrentDomain.BaseDirectory}/bin/info.txt", $"无效!{user.Id}的标识为{flag},姓名为{user.Name}\r\n"); //用户的N次请求,为无效请求 channel.BasicAck(e.DeliveryTag, false); } catch (Exception ex) { File.AppendAllText($"{System.AppDomain.CurrentDomain.BaseDirectory}/bin/log.txt", ex.Message); } }; channel.BasicConsume("NET", false, consumber); //停在这里 while (true) { } } // ReSharper disable once FunctionNeverReturns }
static void Main(string[] args) { try { Console.WriteLine($"IKVM.NET MQ Client: {MqHelper.GetMqClientLevel()}"); // Queue Demo var connection = "localhost"; var queueManager = "QM1"; var channel = "DEV.ADMIN.SVRCONN"; var port = 1414; var qMgr = new MqQueueManager(connection, queueManager, channel, port); qMgr.Create("QL.Q1.AUTO_DEMO1"); qMgr.Create("Q1.AUTO_DEMO1", "QL.Q1.AUTO_DEMO1", "CLUSTER1"); var qResult = qMgr.Inquire("QL.Q1.AUTO"); foreach (var q in qResult) { Console.WriteLine($"Name: {q.Name} - BaseObject: {q.BaseObject} - ClusterName: {q.ClusterName}"); } //qMgr.Delete("Q1.AUTO_DEMO1"); //qMgr.Delete("QL.Q1.AUTO_DEMO1"); // Subscription Demo var connection2 = "localhost"; var queueManager2 = "QM1"; var sMgr = new MqSubscriptionManager(connection2, queueManager2, channel, port); sMgr.Create("SUB.AUTODEMO", "/SU/AUTO_DEMO", "Q1.AUTO_DEMO1"); var sResult = sMgr.Inquire("SUB.AUTODEMO"); foreach (var sub in sResult) { Console.WriteLine(sub.Name); } //sMgr.Delete("SUB.AUTODEMO"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } Console.WriteLine("Press any key to exit"); Console.ReadKey(); }
static void Main(string[] args) { using (var channel = MqHelper.GetConnection().CreateModel()) { channel.QueueDeclare("NET", true, false, false, null); var consumber = new EventingBasicConsumer(channel); channel.BasicQos(0, 1, false); consumber.Received += (sender, e) => { try { var user = JsonConvert.DeserializeObject <User>(Encoding.UTF8.GetString(e.Body)); var flag = RedisHelper.GetRedisClient().Incr(user.Id.ToString()); if (flag == 1) { //用户的第一次请求,为有效请求 //下面开始入库,这里使用List做为模拟 Console.WriteLine($"{user.Id}标识为{flag} {user.Name}"); var dbContext = new Model1(); dbContext.Person.Add(new Person() { Id2 = user.Id.ToString(), Name = user.Name }); Task ts = dbContext.SaveChangesAsync(); ts.Wait(); //添加入库标识 RedisHelper.GetRedisClient().Incr($"{user.Id.ToString()}入库"); Console.WriteLine("入库成功"); } //用户的N次请求,为无效请求 channel.BasicAck(e.DeliveryTag, false); } catch (Exception ex) { File.AppendAllText($"{System.AppDomain.CurrentDomain.BaseDirectory}/bin/log.txt", ex.Message); } }; Console.WriteLine("开始工作"); channel.BasicConsume("NET", false, consumber); Console.ReadKey(); } }
public void SummaryTest() { using (var helper = new MqHelper("SinxTest", "wDuuwhy2ibIX4l9l", "roBHfibj5L2om2dsx0OhpASof3RUA1")) { // ---------------- 发送 --------------- var r = helper.SendAsync("tag", "key", "body").Result; Assert.True(r); // ---------------- 接收 --------------- var mqMessageList = helper.GetAsync().Result; Assert.True(mqMessageList.Any(m => m.ReconsumeTimes == 0)); // 队列中可定有一个我新添加的, 第一次消费的 Debug.WriteLine(mqMessageList.Count()); // ---------------- 删除 --------------- var tasks = mqMessageList.Select(m => helper.DeleteAsync(m.MsgHandle)); var results = Task.WhenAll(tasks).Result; Assert.True(results.All(b => b)); // 删除了所有查出来的消息 } }
/// <summary> /// 初始化 /// </summary> /// <param name="redisHelper">redis</param> /// <param name="wxHelper">微信helper</param> /// <param name="unitOfWorkManager">abp自定义事务</param> /// <param name="crmAptMstrRepository">预约仓储</param> /// <param name="mdmBuMstrRepository">机构仓储</param> /// <param name="sysUsrWctRepository">粉丝仓储</param> /// <param name="sysUsrMstrRepository">用户仓储</param> /// <param name="smsHelper">短信helper</param> /// <param name="configuration">配置</param> /// <param name="mqHelper">mqHelper</param> public AptJob(RedisHelper redisHelper, WxHelper wxHelper, IUnitOfWorkManager unitOfWorkManager, ICrmAptMstrRepository crmAptMstrRepository, IMdmBuMstrRepository mdmBuMstrRepository, ISysUsrWctRepository sysUsrWctRepository, ISysUsrMstrRepository sysUsrMstrRepository, SmsHelper smsHelper, IConfiguration configuration, MqHelper mqHelper) { _redisHelper = redisHelper; _wxHelper = wxHelper; _unitOfWorkManager = unitOfWorkManager; _crmAptMstrRepository = crmAptMstrRepository; _mdmBuMstrRepository = mdmBuMstrRepository; _sysUsrWctRepository = sysUsrWctRepository; _sysUsrMstrRepository = sysUsrMstrRepository; _smsHelper = smsHelper; _configuration = configuration; _mqHelper = mqHelper; }
static void Main(string[] args) { int MaterialUnit = Int32.Parse("0.51267"); string str = "{'key':'123456789'}"; Type type = typeof(Program); Type tp = JsonConvert.DeserializeObject <Type>(str); Action <int> act = (Action <int>)Delegate.CreateDelegate(typeof(Action <int>), type.GetMethod("TestMethod")); act(10); MqHelper.SendMessage("TestMq", "test", "f**k denglu"); Message message = MqHelper.ReceiveMessage("TestMq"); Console.WriteLine(message.Body); Console.ReadLine(); }
/// <summary> /// 操作成功后记录用户行为 /// </summary> /// <param name="filterContext"></param> public override void OnActionExecuted(ActionExecutedContext filterContext) { try { base.OnActionExecuted(filterContext); ActionResult result = filterContext.Result; if (IsActionResultSuccess(result)) { ActionResultExcuteFactory factory = new ActionResultExcuteFactory(this._operationOption, this._actionParams); this._operation = factory.GetUserOperation(); MqHelper.Send(MqHelper.ARTICLE_STATISTICS_QUEUE, new Dictionary <string, object>() { { "Operation", _operation.Operation }, { "ArticleId", _operation.ArticleId } }); //ArticleBll.InsertUserOperation(this._operation).ConfigureAwait(false); } } catch (Exception ex) { WebLog.LogException(ex); } }
public void Run([TimerTrigger("0 */10 * * * *")] TimerInfo myTimer, ILogger log) { var scheduledSearches = _database.GetSheetsToSearch(); Parallel.ForEach(scheduledSearches, search => { //Chamar API pra cadastrar o pedido using (var client = new HttpClient()) { string queueName = MqHelper.GetQueueChatName(search.ChatId); //Criando o conteudo para a Azure function var str = new StringContent(JsonConvert.SerializeObject(new { name = search.Term, queue = queueName }), Encoding.Default, "application/json"); //Cadastrar uma fila pra escutar até voltar as imagens _mq.CreateQueue(queueName); //Chamando a Azure Function client.PostAsync(EnvironmentHelper.GetValue(DictionaryConstants.OrquestradorGetSheetUrl), str).GetAwaiter().GetResult(); } }); log.LogInformation($"Scheduler runned at '{DateTime.Now}'"); }