• 关于

    MessageQueue

    的搜索结果

问题

android的多点触控问题

蛮大人123 2019-12-01 20:17:37 813 浏览量 回答数 1

问题

请问android中dispatchTouchEvent方法里为何不能用toast显示信息?

爵霸 2019-12-01 20:08:11 1124 浏览量 回答数 1

回答

Consumer主动的从Broker拉取消息,主动权由应用控制,可以实现批量的消费消息。Pull方式里,取消息的过程需要用户自己写,首先通过打算消费的Topic拿到MessageQueue的集合,遍历MessageQueue集合,然后针对每个MessageQueue批量取消息,一次取完后,记录该队列下一次要取的开始offset,直到取完了,再换另一个MessageQueue。   反观Pull模式,consumer可以按需消费,不用担心自己处理不了的消息来骚扰自己,而broker堆积消息也会相对简单,无需记录每一个要发送消息的状态,只需要维护所有消息的队列和偏移量就可以了。所以对于慢消费,消息量有限且到来的速度不均匀的情况,pull模式比较合适消息延迟与忙等。  

有头发的程序猿 2019-12-02 03:11:32 0 浏览量 回答数 0

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

回答

Android中主线程是不能进行耗时操作的,子线程是不能进行更新UI的。所以就有了handler,它的作用就是实现线程之间的通信。 handler整个流程中,主要有四个对象,handler,Message,MessageQueue,Looper。当应用创建的时候,就会在主线程中创建handler对象, 我们通过要传送的消息保存到Message中,handler通过调用sendMessage方法将Message发送到MessageQueue中,Looper对象就会不断的调用loop()方法 不断的从MessageQueue中取出Message交给handler进行处理。从而实现线程之间的通信。

剑曼红尘 2020-04-10 12:44:24 0 浏览量 回答数 0

回答

从个人经验来看,我知道TransactionScope与SQL配合使用非常好。我对MSMQ不太熟悉,但是Google进行了快速搜索,显示了一些示例(正常情况下是论坛讨论),这些示例看起来运行正常。System.Messaging.MessageQueue对象还具有.Transactional属性,而.Send()方法具有MessageQueueTransaction参数,因此我想说它们都应该一起工作。 这是来自搜索中的一个论坛的代码示例(不是我的代码): using (TransactionScope scope = new TransactionScope()) { using (MessageQueue myQueue = new MessageQueue(QUEUE_NAME)) { if (myQueue.Transactional) { myQueue.Send(TicketTextBox.Text, "Message", MessageQueueTransactionType.Automatic); } } scope.Complete(); } 只需将您的SQL代码扔到TransactionScope的using()块中(在.Complete()之前),您就应该做好了吗?

保持可爱mmm 2019-12-02 03:17:24 0 浏览量 回答数 0

问题

单生产者多重消费者骨架

aqal5zs3gkqgc 2019-12-19 20:42:52 0 浏览量 回答数 0

回答

Android UI线程非安全不能在工作线程中操作UI,所有UI操作必须在主线程(又名UI线程)两个原则:Do not block the UI thread(不要在UI线程中做耗时的工作,阻塞线程);Do not access the Android UI toolkit from outside the UI thread(不要在非主线程操作UI)非主线程处理后的数据需要更新至主线程UI界面,通常可以就需要用hannler处理。基本原理:主线程起来以后有一个MessageQueue,同时和该队列配对的有一个Looper,而子线程有这个MessageQueue的引用,子线程处理完以后就会向主线程的消息队列发消息,主线程轮询自己的队列,发现有未处理的消息就进行处理。class LooperThread extends Thread {public Handler mHandler;public void run() {Looper.prepare();mHandler = new Handler() {public void handleMessage(Message msg) {// process incoming messages here}};Looper.loop();}}

hankunfang 2019-12-02 02:46:08 0 浏览量 回答数 0

问题

Java使用阿里云MQ,用tcp的方式消费消息,消费端如何去掉控制台不断的打印[MQClientFactoryScheduledThread] INFO [RemoteBrokerOffsetStore.java]

释左眸 2019-12-01 19:42:50 756 浏览量 回答数 4

问题

eclipse 的设置断点设不了什么原因?

爵霸 2019-12-01 19:39:35 843 浏览量 回答数 1

回答

没做过,能给个例子或链接地址我学习下。JAVA屌丝搞不来啊。 ######http://msdn.microsoft.com/zh-cn/library/system.messaging.messagequeue(v=vs.100).aspx######Windows系统的消息队列不就可以么?

kun坤 2020-06-08 11:21:40 0 浏览量 回答数 0

问题

osc android 新版手机客户端点击文中连接报错弹出?报错

爱吃鱼的程序员 2020-06-22 19:15:22 0 浏览量 回答数 1

问题

对Handler的理解:报错

kun坤 2020-06-08 11:03:22 4 浏览量 回答数 1

回答

消息队列 RocketMQ 版客户端日志文件是 ons.log,包括 INFO、WARN、ERROR 级别的日志。 本文提供常见的客户端日志打印信息,旨在帮助您更好地从打印的日志中获取信息,并判断当前状态,从而排查故障。 下表列举了 ons.log 日志信息说明(持续更新)。 日志级别 打印信息 说明 解决方案 INFO [persistAll] Group: CID_XXXX ClientId: 10.31.40.100@171374#14159XXX#-2036649XXX#20931314294957XXX updateConsumeOffsetToBroker MessageQueue [topic=XXXX, brokerName=qdinternetorder-XX, queueId=X] 1013XXX 这种现象说明消息已经消费成功,并且在消息队列 RocketMQ 版服务端已持久化消费进度;MessageQueue 里包括了消息主题、对应的 brokerName、消费队列的 ID 不涉及 INFO [PULL_TPS] [CID_XXXX@CID_XXXX] Stats In One Minute, SUM: 0 TPS: 0.00 AVGPT: 0.00[PULL_RT] [%RETRY%CID_XXXX@CID_XXXX] Stats In One Minute, SUM: 0 TPS: 0.00 AVGPT: 0.00 该类信息打印的是从 consumeQueue 中拉取消息时的 TPS(每秒 Request 的数量) 不涉及 WARN [TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a while, period in queue: 905ms, size of queue: 1164 消息队列 RocketMQ 版服务端压力过大,处理不了过多的请求;由于服务端在存储数据时是先写入 pageCache,然后去刷盘,因此每隔 10s 会去清理过期的请求(此过程会判断缓存页是否繁忙) 扩容,增加 Broker,分担压力 osPageCacheBusyTimeOutMills 属性值调大 WARN execute the pull request exceptioncom.aliyun.openservices.shade.com.alibaba.rocketmq.client.exception.MQBrokerException: CODE: 25 DESC: the consumer's subscription not latest Broker 每隔一段时间就会向 NameServer 上报自己的路由信息,如果此过程网络抖动,拉不到最新的订阅信息,导致消费者消费的时候,会出现该警告 不涉及 WARN [WRONG]mq is consuming, so can not unlock it, MessageQueue [topic=XX, brokerName=szorder2-02, queueId=1]. maybe hanged for a while, 2 进行负载均衡时,对消息处理队列尝试加锁,如果 1s 内还未加锁成功,说明当前消息处理队列已经有消费者在访问,不能进行解锁 不涉及 WARN doRebalance, XXX-CID, add a new mq failed, MessageQueue [topic=XXXX, brokerName=szorder2-XX, queueId=X], because lock failed 当前使用的是顺序 Topic,为了保证单个分区中消息的顺序消费,会有个 Lock 的机制。客户端有这个日志说明其中某个分区已经有客户端在消费了。 不涉及 WARN get Topic [XXXXXX] RouteInfoFromNameServer is not exist valuecom.aliyun.openservices.shade.com.alibaba.rocketmq.client.exception.MQClientException: CODE: 17 DESC: No topic route info in name server for the topic: TOPIC_XXXXXSee http://rocketmq.apache.org/docs/faq/ for further details. AccessKey(包含 AccessKeyId 和 AccessKeySecret)配置错误 没有控制台于当前实例下创建的 Group ID(GID) 实例化的代码中,NameServerAddr 没有配置正确 配置正确的 AccessKey 在当前实例下创建 GID Java SDK 1.8.0 及以上版本,推荐配置 NameServerAddr,此参数可从消息队列 RocketMQ 版控制台获取,与之前版本配置的 ONSAddr 是不一致的 WARN com.aliyun.openservices.ons.api.impl.authority.exception.AuthenticationException: signature validate by dauth failed AccessKey(包含 AccessKeyId 和 AccessKeySecret)配置错误 AccessKey 要配置创建该 GID 使用的 AccessKey WARN NettyClientPublicExecutor_3 - execute the pull request exceptioncom.aliyun.openservices.shade.com.alibaba.rocketmq.client.exception.MQBrokerException: CODE: 26 DESC: subscription group [CID_XXX] does not exist,See http://rocketmq.apache.org/docs/faq/ for further details. 订阅关系没有推送到消息队列 RocketMQ 版 broker 上 subscription.json 文件里直接添加 GID 对应的信息即可 WARN execute the pull request exceptioncom.aliyun.openservices.shade.com.alibaba.rocketmq.client.exception.MQBrokerException: CODE: 24 DESC: the consumer's subscription not exist 缺少订阅关系 不涉及

保持可爱mmm 2020-03-28 21:35:08 0 浏览量 回答数 0

回答

<p>还有我的rabbit.xml配置</p> ---------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"        xmlns:rabbit="http://www.springframework.org/schema/rabbit"        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd     http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.6.xsd">     <!-- rabbitmq连接配置 -->     <rabbit:connection-factory id="connectionFactory"                                virtual-host="testUser"                                host="192.168.53.110"                                username="root" password="123456"                                port="5672" />     <rabbit:admin connection-factory="connectionFactory" />     <!-- 声明消息队列,消息系统监听队列 -->     <!-- messageQueue 是在(1)中创建的队列 -->     <rabbit:queue id="messageQueue" durable="true"                   auto-delete="false" exclusive="false" name="messageQueue" />     <!-- exchange queue binging key 绑定 -->     <!--声明交换 在(1)配置的交换-->     <rabbit:topic-exchange name="messageExchange"                            durable="true" auto-delete="false" id="messageExchange">         <rabbit:bindings>             <!-- 声明队列和交换的关系 -->             <rabbit:binding pattern="message.*" queue="messageQueue"></rabbit:binding>         </rabbit:bindings>     </rabbit:topic-exchange>     <rabbit:template exchange="messageExchange" id="rabbitTemplate"                      connection-factory="connectionFactory"  message-converter="jsonMessageConverter" />     <rabbit:listener-container             connection-factory="connectionFactory" acknowledge="auto">         <!-- 让消费者监听这个队列 -->         <rabbit:listener ref="messageConsumer" queues="messageQueue" />     </rabbit:listener-container>     <!--声明生产者 -->     <bean id="messageSender" class="com.java46.amqp.MessageSender">         <property  name="amqpTemplate" ref="rabbitTemplate" >         </property>         <!-- <property name="routingKey" value="message.test" ></property> -->     </bean>     <!--声明消费者 -->     <bean id="messageConsumer" class="com.java46.amqp.MessageConsumer" />     <bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" /> </beans> <p>仔细看异常链吧</p>

爱吃鱼的程序员 2020-06-06 15:41:33 0 浏览量 回答数 0

回答

Re第一题每个topic提供一个消费组还是总共一个消费组? 也就是说一个topic只能启一个spout,是吗?这样性能调整会受到限制,这个可是性能挑战赛呀,这种限制合理吗? ------------------------- Re第一题每个topic提供一个消费组还是总共一个消费组? 噢,刚刚才开始使用RocketMQ,对它了解不深。我是用DefaultMQPullConsumer的,发现用同一个consumerGroup创建多个DefaultMQPullConsumer对象会报错: Caused by: com.alibaba.rocketmq.client.exception.MQClientException: The consumer group[raceConsumerGroup] has been created before, specify another name please. See github.com/alibaba/RocketMQ/issues/40 for further details. 请问使用Pull方式拉RocketMQ的消息有哪个类可以使用同一个consumerGroup同时创建多个对象的?我想创建多个对象,每一个分别对应一个Topic中的一个MessageQueue来用Pull方式拉消息。 ------------------------- Re第一题每个topic提供一个消费组还是总共一个消费组? 所以我才得出结论要不每个Topic只启一个spout用DefaultMQPullConsumer对象来拉消息,要不就用不同的consumerGroup创建多个DefaultMQPullConsumer对象同时来拉消息。 ------------------------- Re第一题每个topic提供一个消费组还是总共一个消费组? 不是不行,只是不如每个MessageQueue分别用一个DefaultMQPullConsumer对象Pull拉消息的性能好。这个我做过测试了。 ------------------------- Re第一题每个topic提供一个消费组还是总共一个消费组? 亲,一个Topic有多个MessageQueue(消息队列)的。 ------------------------- Re第一题每个topic提供一个消费组还是总共一个消费组? hi,分析了一下RocketMQ的客户端代码发现“com.alibaba.rocketmq.client.exception.MQClientException: The consumer group[raceConsumerGroup] has been created before, specify another name please”异常的原因是:DefaultMQPullConsumerImpl在执行start方法时,向一个MQClientManager对象请求用consumerGroup对自己进行注册,并校验是否已经用相同的consumerGroup在MQClientManager对象中注册过了。如果已经注册过了就抛出上面的异常。而MQClientManager实例是个“单例”,在JVM内是全唯一的。所以在JVM内用同一个consumerGroup只能使用同一个DefaultMQPullConsumer对象,不能同时使用多个DefaultMQPullConsumer对象。但在不同的JVM内是可以用相同的consumerGroup分别创建并使用DefaultMQPullConsumerImpl对象的。所以在使用DefaultMQPullConsumerImpl时要用类变量进行引用,保证在整个JVM内共享同一个DefaultMQPullConsumerImpl实例如:static DefaultMQPullConsumer singleDefaultMQPullConsumer = new DefaultMQPullConsumer("raceConsumerGroup") ------------------------- Re第一题每个topic提供一个消费组还是总共一个消费组? RocketMQ的文档少得可怜,遇到问题要自己翻代码才能解决。Jstorm的文档也是少得可怜幸好可以借鉴Storm的。阿里要想自己的开源项目象Kafka、Storm(Heron)、Hbase那样广泛被外界使用文档恐怕还要多下工夫呀!

cmptmn 2019-12-02 02:03:11 0 浏览量 回答数 0

回答

发送消息示例代码 public class OrderedProducer { public static void main(String[] args) throws Exception { //Instantiate with a producer group name. MQProducer producer = new DefaultMQProducer("example_group_name"); //Launch the instance. producer.start(); String[] tags = new String[] {"TagA", "TagB", "TagC", "TagD", "TagE"}; for (int i = 0; i < 100; i++) { int orderId = i % 10; //Create a message instance, specifying topic, tag and message body. Message msg = new Message("TopicTestjjj", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET)); SendResult sendResult = producer.send(msg, new MessageQueueSelector() { @Override public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) { Integer id = (Integer) arg; int index = id % mqs.size(); return mqs.get(index); } }, orderId); System.out.printf("%s%n", sendResult); } //server shutdown producer.shutdown(); } }订阅消息示例代码 public class OrderedConsumer { public static void main(String[] args) throws Exception { DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("example_group_name"); consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); consumer.subscribe("TopicTest", "TagA || TagC || TagD"); consumer.registerMessageListener(new MessageListenerOrderly() { AtomicLong consumeTimes = new AtomicLong(0); @Override public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs, ConsumeOrderlyContext context) { context.setAutoCommit(false); System.out.printf(Thread.currentThread().getName() + " Receive New Messages: " + msgs + "%n"); this.consumeTimes.incrementAndGet(); if ((this.consumeTimes.get() % 2) == 0) { return ConsumeOrderlyStatus.SUCCESS; } else if ((this.consumeTimes.get() % 3) == 0) { return ConsumeOrderlyStatus.ROLLBACK; } else if ((this.consumeTimes.get() % 4) == 0) { return ConsumeOrderlyStatus.COMMIT; } else if ((this.consumeTimes.get() % 5) == 0) { context.setSuspendCurrentQueueTimeMillis(3000); return ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT; } return ConsumeOrderlyStatus.SUCCESS; } }); consumer.start(); System.out.printf("Consumer Started.%n"); } }

xuning715 2019-12-02 01:12:19 0 浏览量 回答数 0

问题

使用Apache Qpid JMS对接阿里云物联网平台 ,配置SELECTOR不生效,求解答

刘刚_ 2020-05-20 17:24:07 3 浏览量 回答数 1

回答

在多线程中有多种方法让线程按特定顺序执行,你可以用线程类的join()方法在一个线程中启动另一个线程,另外一个线程完成该线程继续执行。为了确保三个线程的顺序你应该先启动最后一个(T3调用T2,T2调用T1),这样T1就会先完成而T3最后完成。 线程间通信 我们知道线程是CPU调度的最小单位。在Android中主线程是不能够做耗时操作的,子线程是不能够更新UI的。而线程间通信的方式有很多,比如广播,Eventbus,接口回掉,在Android中主要是使用handler。handler通过调用sendmessage方法,将保存消息的Message发送到Messagequeue中,而looper对象不断的调用loop方法,从messageueue中取出message,交给handler处理,从而完成线程间通信。 线程池 Android中常见的线程池有四种,FixedThreadPool、CachedThreadPool、ScheduledThreadPool、SingleThreadExecutor。 FixedThreadPool线程池是通过Executors的new FixedThreadPool方法来创建。它的特点是该线程池中的线程数量是固定的。即使线程处于闲置的状态,它们也不会被回收,除非线程池被关闭。当所有的线程都处于活跃状态的时候,新任务就处于队列中等待线程来处理。注意,FixedThreadPool只有核心线程,没有非核心线程。 CachedThreadPool线程池是通过Executors的newCachedThreadPool进行创建的。它是一种线程数目不固定的线程池,它没有核心线程,只有非核心线程,当线程池中的线程都处于活跃状态,就会创建新的线程来处理新的任务。否则就会利用闲置的线程来处理新的任务。线程池中的线程都有超时机制,这个超时机制时长是60s,超过这个时间,闲置的线程就会被回收。这种线程池适合处理大量并且耗时较少的任务。这里得说一下,CachedThreadPool的任务队列,基本都是空的。 ScheduledThreadPool线程池是通过Executors的newScheduledThreadPool进行创建的,它的核心线程是固定的,但是非核心线程数是不固定的,并且当非核心线程一处于空闲状态,就立即被回收。这种线程适合执行定时任务和具有固定周期的重复任务。 SingleThreadExecutor线程池是通过Executors的newSingleThreadExecutor方法来创建的,这类线程池中只有一个核心线程,也没有非核心线程,这就确保了所有任务能够在同一个线程并且按照顺序来执行,这样就不需要考虑线程同步的问题。

游客bnlxddh3fwntw 2020-04-10 14:06:44 0 浏览量 回答数 0

问题

【教程免费下载】&nbsp;&nbsp; 深入理解Android:卷III

沉默术士 2019-12-01 22:08:02 1195 浏览量 回答数 2
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站