精华内容
下载资源
问答
  • Android handler 取消延时handler消息

    千次阅读 2019-08-31 10:04:55
    Android handler 取消延时handler消息 myHandler.sendEmptyMessageDelayed(TEST, 30000);...如果想在到半分钟的时候取消发送TEST,可以 myHandler.removeMessages(TEST); 这样handleMessage就不会收到TEST ...

    Android handler

    取消延时handler消息

    myHandler.sendEmptyMessageDelayed(TEST, 30000);// 半分钟后发TEST(即msg.what)
    
    如果想在未到半分钟的时候取消发送TEST,可以
    
    myHandler.removeMessages(TEST);
    
    这样handleMessage就不会收到TEST
    
    展开全文
  • 相比之下,“未发送”功能将允许用户完全删除消息,就像从未发生过一样。 Of course, there’s a catch: it’s limited to a small, 10-minute window. That means you won’t be able to run back through old ...
    Remove options on Facebook Messenger
    TechCrunch TechCrunch

    Last year, it was revealed that Mark Zuckerberg had an option to “unsend” messages that were sent on Facebook Messenger. Once that info came out, everyone who uses Messenger wanted in on the functionality too—and now Facebook is delivering.

    去年,据透露,马克·扎克伯格(Mark Zuckerberg)可以“取消发送”在Facebook Messenger上发送的消息。 信息发布后,所有使用Messenger的人也都希望使用该功能-现在Facebook正在交付。

    So, to be clear, the current “delete” option on Facebook Messenger only removes the message for you—the recipient can still see it. That also means it’s still on Facebook’s Messenger servers. The Unsend feature, by contrast, will allow users to completely remove the message as if it never happened.

    因此,很明显,Facebook Messenger上当前的“删除”选项只会为您删除邮件-收件人仍然可以看到它。 这也意味着它仍在Facebook的Messenger服务器上。 相比之下,“未发送”功能将允许用户完全删除消息,就像从未发生过一样。

    Of course, there’s a catch: it’s limited to a small, 10-minute window. That means you won’t be able to run back through old messages and unsend anything you want, which is both a bummer and a logical move. Still, if you say something and immediately regret it, you’ll be able to unsend it starting today. Here’s how.

    当然,有一个陷阱:它限于10分钟的小窗口。 这意味着您将无法遍历旧消息并且不发送您想要的任何东西,这既无聊又合乎逻辑。 不过,如果您说了些什么并立即后悔,您可以从今天开始取消发送。 这是如何做。

    It’s a pretty straightforward option: just long-press on the message. You’ll get the normal reaction emoji just above message, as well as some options down below: Copy, Remove, and Forward. This replaces the Copy, Forward, Delete options that have historically been present here.

    这是一个非常简单的选择:只需长按消息即可。 您会在消息上方获得正常的React表情符号,并在下方获得一些选项:复制,删除和转发。 这将替换此处一直存在的“复制”,“转发”,“删除”选项。

    Remove options on Facebook Messenger
    TechCrunch TechCrunch

    Tapping the Remove option will then offer two options: “Remove for Everyone” and “Remove for You.” Pretty self-explanatory here, but if you tap the “Remove for Everyone” option it will unsend the message. The latter option will function in the same way the current Delete option works.

    点击“删除”选项将提供两个选项:“为所有人删除”和“为您删除”。 这里很不言自明,但是如果您点击“为所有人删除”选项,它将取消发送该消息。 后一个选项的功能与当前“删除”选项的工作方式相同。

    While it hasn’t been confirmed yet, this should work the same way in Messenger on the web: hover over a message, click the ellipsis menu button, then choose the Remove option. We’ll confirm this once the feature is available for us to use.

    尽管尚未确认,但它在Web上的Messenger中的工作方式相同:将鼠标悬停在邮件上,单击省略号菜单按钮,然后选择“删除”选项。 该功能可供我们使用后,我们将对此进行确认。

    And that’s all there is to that. This functionality will start rolling out today to everyone.

    这就是全部。 该功能将从今天开始向所有人推广。

    翻译自: https://www.howtogeek.com/fyi/heres-how-to-unsend-messages-on-facebook-messenger/

    展开全文
  • :exclamation_question_mark: 如何删除/取消发送所有消息? 安装 打开 下载最新版本(源代码zip)并解压缩到桌面。 从解压缩的文件夹中双击 。 (此js文件不会在浏览器或浏览器控制台中运行,只需双击并与...
  • springboot整合rabbitmq之-发送延时消息取消超时订单

    千次阅读 热门讨论 2019-06-13 17:29:31
    目录 1搭建项目开发环境 1.1安装rabbitmq ...2.1用户下单超时支付自动取消订单 2.2代码实现 2.2.1http请求服务层 2.2.2业务逻辑服务层 2.2.3代码测试 3总结 4个人说明 1搭...

    目录

     

    1搭建项目开发环境

    1.1安装rabbitmq

    1.2下载rabbitmq

    1.3启动idea开始集成rabbitmq

    2springboot集成rabbitmq应用场景

     2.1用户下单超时未支付自动取消订单

    2.2代码实现

      2.2.1http请求服务层

       

    2.2.2业务逻辑服务层

     

     2.2.3代码测试

    3总结

     

    4个人说明

     


    1搭建项目开发环境

    1.1安装rabbitmq

             RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端

    1.2下载rabbitmq

       安装rabbitmq,需要先安装   下载地址:http://erlang.org/download

      安装如下图

       安装RabbitMQ,下载地址:https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.14/rabbitmq-server-3.7.14.exe

    安装完成后,进入RabbitMQ安装目录下的sbin目录

                

             4.在地址栏输入cmd并回车启动命令行,然后输入以下命令启动管理功能:

         rabbitmq-plugins enable rabbitmq_management

       5.访问地址查看是否安装成功:http://localhost:15672/

           

    1.3启动idea开始集成rabbitmq

    •   找到项目配置文件 

    #整合rabbitmq
    rabbitmq:
      host: localhost
      ##服务器端口
      port: 5672
      virtual-host: /
      username: guest
      password: guest
      publisher-confirms: true #如果对异步消息需要回调必须设置为true
    • 添加rabbitmq配置类 

     

    @Configuration
    public class RabbitMqConfig {
    
        /**
         * 订单消息实际消费队列所绑定的交换机
         */
        @Bean
        DirectExchange orderDirect() {
            return (DirectExchange) ExchangeBuilder
                    .directExchange(QueueEnum.QUEUE_ORDER_CANCEL.getExchange())
                    .durable(true)
                    .build();
        }
    
        /**
         * 订单延迟队列队列所绑定的交换机
         */
        @Bean
        DirectExchange orderTtlDirect() {
            return (DirectExchange) ExchangeBuilder
                    .directExchange(QueueEnum.QUEUE_TTL_ORDER_CANCEL.getExchange())
                    .durable(true)
                    .build();
        }
    
        /**
         * 订单实际消费队列
         */
        @Bean
        public Queue orderQueue() {
            return new Queue(QueueEnum.QUEUE_ORDER_CANCEL.getName());
        }
    
        /**
         * 订单延迟队列(死信队列)
         */
        @Bean
        public Queue orderTtlQueue() {
            return QueueBuilder
                    .durable(QueueEnum.QUEUE_TTL_ORDER_CANCEL.getName())
                    .withArgument("x-dead-letter-exchange", QueueEnum.QUEUE_ORDER_CANCEL.getExchange())//到期后转发的交换机
                    .withArgument("x-dead-letter-routing-key", QueueEnum.QUEUE_ORDER_CANCEL.getRouteKey())//到期后转发的路由键
                    .build();
        }
    
        /**
         * 将订单队列绑定到交换机
         */
        @Bean
        Binding orderBinding(DirectExchange orderDirect, Queue orderQueue){
            return BindingBuilder
                    .bind(orderQueue)
                    .to(orderDirect)
                    .with(QueueEnum.QUEUE_ORDER_CANCEL.getRouteKey());
        }
    
        /**
         * 将订单延迟队列绑定到交换机
         */
        @Bean
        Binding orderTtlBinding(DirectExchange orderTtlDirect, Queue orderTtlQueue){
            return BindingBuilder
                    .bind(orderTtlQueue)
                    .to(orderTtlDirect)
                    .with(QueueEnum.QUEUE_TTL_ORDER_CANCEL.getRouteKey());
        }
    
    }
    • 配置生产者消费者类 

     

    @Component
    public class CancelOrderSender {
        private static Logger LOGGER = LoggerFactory.getLogger(CancelOrderSender.class);
        @Autowired
        private AmqpTemplate amqpTemplate;
    
        public void sendMessage(Long orderId,final long delayTimes){
            //给延迟队列发送消息
            amqpTemplate.convertAndSend(QueueEnum.QUEUE_TTL_ORDER_CANCEL.getExchange(), QueueEnum.QUEUE_TTL_ORDER_CANCEL.getRouteKey(), orderId, new MessagePostProcessor() {
                @Override
                public Message postProcessMessage(Message message) throws AmqpException {
                    //给消息设置延迟毫秒值
                    message.getMessageProperties().setExpiration(String.valueOf(delayTimes));
                    return message;
                }
            });
            LOGGER.info("send orderId:{}",orderId);
        }
    }
    @Component
    @RabbitListener(queues = "mall.order.cancel")
    public class CancelOrderReceiver {
        private static Logger LOGGER = LoggerFactory.getLogger(CancelOrderReceiver.class);
    
        @RabbitHandler
        public void handle(Long orderId){
            LOGGER.info("消息被消费成功");
            LOGGER.info("process orderId:{}",orderId);
        }
    }
    
    • spring boot集成rabbitmq完成

    2springboot集成rabbitmq应用场景


     2.1用户下单超时未支付自动取消订单

    订单取消功能:

       一般情况下用户下单后,如果在120分钟以内还不支付,则此订单将会默认取消。

    1. 可以用定时任务每隔1分钟去扫描判断有没有超时的订单如果有,则直接取消订单。
    2. 第二种情况可以利用rabbitmq延时队列实现,用户下单那一时刻,则直接调用单个订单超时自动取消接口

    2.2代码实现

      2.2.1http请求服务层

       

    @RestController
    @RequestMapping("api")
    public class OrderController {
    
        @Autowired
        private CancelOrderSender orderSender;
        @RequestMapping(value = "/cancelOrder",method = RequestMethod.POST)
        @ResponseBody
        public CommonResult cancelOrder(){
            //1分钟消息被消费 //单位毫秒
            orderSender.sendMessage(1L,60000);
    
            return CommonResult.success(null);
        }
    
    
    }

    2.2.2业务逻辑服务层

    @Component
    public class CancelOrderSender {
        private static Logger LOGGER = LoggerFactory.getLogger(CancelOrderSender.class);
        @Autowired
        private AmqpTemplate amqpTemplate;
    
        public void sendMessage(Long orderId,final long delayTimes){
            //给延迟队列发送消息
            amqpTemplate.convertAndSend(QueueEnum.QUEUE_TTL_ORDER_CANCEL.getExchange(), QueueEnum.QUEUE_TTL_ORDER_CANCEL.getRouteKey(), orderId, new MessagePostProcessor() {
                @Override
                public Message postProcessMessage(Message message) throws AmqpException {
                    //给消息设置延迟毫秒值
                    message.getMessageProperties().setExpiration(String.valueOf(delayTimes));
                    return message;
                }
            });
            LOGGER.info("send orderId:{}",orderId);
        }
    }
    

     

     2.2.3代码测试

        

     

    •        postman测试
    •   测试结果

          

        用户下单成功消息延迟1分钟被消费

    3总结

    1.      技术方向springboot如何整合rabbitmq实现消息队列
    2.      业务方向用户下单超时未支付订单如何处理,以及自己的实现思路

     

    4个人说明

     经验是由一点一点积累的,思维也是由一天一天训练出来的。 

     

    展开全文
  • handler取消消息方式

    千次阅读 2018-07-04 15:29:08
    handler发消息方式:发送即时消息:Message msg = new Message(); msg.what = 100; handler.sendMessage(msg);延时5秒发送消息:Message msg = new Message(); msg.what = 100; handler.sendMessageDelayed(m...

    handler发消息方式:

    发送即时消息:

    1. Message msg = new Message();
    2. msg.what = 100;
    3. handler.sendMessage(msg);

    延时5秒发送消息:

    1. Message msg = new Message();
    2. msg.what = 100;
    3. handler.sendMessageDelayed(msg, 5000);
    当执行handler.sengMessageDelayed后,需要取消消息的发送,可以执行handler.removeMessages(100).

    removeMessages会将handler对应message queue里的消息清空,如果带了int参数则是对应的消息清空。队列里面没有消息则handler会不工作,但不表示handler会停止。当队列中有新的消息进来以后handler还是会处理。

    我的理解:

    1、这个方法使用的前提是之前调用过sendEmptyMessageDelayed(0, time),意思是延迟time执行handler中msg.what=0的方法;

    2、在延迟时间未到的前提下,执行removeMessages(0),则上面的handler中msg.what=0的方法取消执行;

    3、在延迟时间已到,handler中msg.what=0的方法已执行,再执行removeMessages(0),不起作用。


    android 停止Handler

    m Handler.removeCallbacks(mRunnable); 或者  handler.removeMessages(what);
    展开全文
  • Handler消息如何取消

    千次阅读 2017-05-20 17:22:10
    handler发消息方式: 发送即时消息: Message msg = new Message(); msg.what = 100; handler.sendMessage(msg); 延时5秒发送消息: Message msg = new Message(); msg.what = 100; handler.sendMe
  • 前段时间一个朋友问我,我们这产品让我实现个30分钟如果订单支付,系统自动取消订单的功能,当时巴拉巴拉给他说了几种方案; 那么,今天着重挑选一种通用、效率高的方案给大家讲解一下; Demo源码地址详见:...
  • rabbitmq消息发送确认和消费消息手动删除消息
  • 语音消息以及读提醒连续播放

    万次阅读 热门讨论 2016-11-10 14:11:33
    微信引入语音聊天后,使得语音聊天...最近做了一个关于语音聊天demo,现在介绍下整个实现过程:包括录音、保存音频文件至SD卡、发送录音文件、接收新语音消息红点提醒、播放暂停、读语音消息连续播放、播放模式切换。
  • Windows 窗口发送消息参数详解

    万次阅读 2020-06-24 15:32:25
    窗口发送消息参数详解 // 窗口.发送消息 函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果 中文函数原型: 发送消息(hwnd,msg,wparam,iparam) 英文函数原型: sendmessage(hwnd,...
  • 场景介绍:我们都经常在淘宝上买东西,当我们提交订单后,如果某个时间段之内我们没有支付,淘宝肯定不会帮我们一直保留那个订单,如果超过半个小时我们支付的话,淘宝会自动帮我们取消订单。在没有用R...
  • 消息回撤功能环信提供的方法是发送透传消息,在创建透传消息时,用到了两个宏定义字段: /** * 发送回撤cmd消息 * * @param message 待撤销的消息 */ + (void)sendRevokeCMDMessage:(EMMessage *)message { E
  • 方案1:统一的定时任务,每隔1分钟执行一次。 缺点:每隔一分钟处理一...下单后,发送一条消息给mq,并设置mq,30分钟后再处理发送消息动作 优点:时间准确性高,一个单子只执行一次 缺点:基本上的mq,都是默认...
  • Kafka 一直以来都以高吞吐量的特性而家喻户晓,就...在新版的 Kafka Producer 中,设计了一个消息缓冲池,客户端发送消息都会被存储到缓冲池中,同时 Producer 启动后还会开启一个 Sender 线程,不断地从缓冲池获取消
  • 需要用到redis的订阅功能 vi /etc/redis/redis.conf notify-keyspace-events “Ex”。 #x 代表了过期事件。...index.php 创建订单,发布消息,10s后查询订单状态并更新订单 <?php require_once 'Re...
  • 需求:1 订单两小时后支付取消订单回滚库存    1使用消息队列。这里不讲  2.使用redis  商品下单时不扣除库存,把商品id作为key 用hash 保存 订单id value 商品数,有效时间为两小时 订单支付成功时 ...
  • 订单超时取消 …等等… 实现方式 最简单的方式,定时扫表;例如每分钟扫表一次十分钟之后支付的订单进行主动支付 ; 优点: 简单 缺点: 每分钟全局扫表,浪费资源,有一分钟延迟 使用RabbitMq 实现 RabbitMq实现延迟...
  • 微信小程序实现订阅消息发送

    千次阅读 2020-03-20 14:44:57
    微信小程序实现订阅消息发送一共分为三部实现 一:获取订阅消息模板ID 登录微信小程序获取模板:https://mp.weixin.qq.com/ 转存失败重新上传取消 二:获取小程序的订阅消息下发权限 在我们发送小程序的订阅...
  • 延迟队列,顾名思义它是一种带有延迟功能的消息队列。 那么,是在什么场景下我才需要这样的队列呢? 一、背景 先看看一下业务场景: 1.会员过期前3天发送召回通知 2.订单支付成功后,5分钟后检测下游环节是否都正常...
  • SoapHttpClient HttpClient轻量级包装(使用IHttpClientFactory ),用于发布... 修复了未发送SOAPAction的错误。 2.1.0 更新到NetStandardLibrary 2.0 修复了扩展方法递归调用自己的错误 2.0.0 主要重构到代码库。
  • 应用场景:用户下单支付,需要系统自动取消订单 解决方案: 1,实现定时器轮询订单,将支付满30分钟后的订单,进行更新状态,变为取消订单 2,用户查看订单时,先将之前支付的订单进行更新为取消订单 3,延时...
  • Golang使用amqp发送消息

    千次阅读 2016-09-26 17:45:10
    1.为什么使用信道(channel)而不使用TCP连接发送AMQP命令? 对操作系统来说频繁的建立和销毁TCP连接开销非常昂贵,而操作系统每秒建立的连接是有上限的,性能瓶颈不可避免,而只建立一条TCP连接无疑是一个很好的...
  • 30 分钟付款取消订单,怎么做?

    千次阅读 2020-04-09 08:30:00
    点击上方“ 码农编程进阶笔记 ”,选择“置顶或者星标”文末有干货,每天定时与您相约!第一次亲密接触问题:我这边有个需求,用户下单后 30 分钟如果没付款就取消掉,这个要怎么写呀。qufo...
  • 消息中间件MQ与RabbitMQ面试题(2020最新版)

    万次阅读 多人点赞 2020-03-01 11:11:21
    MQ的优点消息队列有什么优缺点?RabbitMQ有什么优缺点?你们公司生产环境用的是什么消息中间件?Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?MQ 有哪些常见问题?如何解决这些问题?什么是RabbitMQ?...
  • 业务调用write后,经过ChannelPipeline职责链处理,消息被投递到消息发送缓冲区待发送,调用flush之后会执行真正的发送操作,底层通过调用Java NIO的SocketChannel进行非阻塞write操作,将消息发送到网络上。...
  • RocketMQ一行代码造成大量消息发送失败

    万次阅读 多人点赞 2020-05-18 21:01:58
    1、问题现象 首先接到项目反馈使用 RocketMQ 会出现如下错误...由于项目组并没有对消息发送失败做任何补偿,导致丢失消息丢失,故需要对这个问题进行深层次的探讨,并加以解决。 2、问题分析 首先我们根据关键字:TIMEO
  • android利用handler延迟消息

    千次阅读 2018-06-13 20:05:41
    使用myHandler.sendEmptyMessageDelayed(TEST, 30000);// 半分钟后TEST(即msg.what)如果想在到半分钟的时候取消发送TEST,可以myHandler.removeMessages(TEST);这样handleMessage就不会收到TEST...
  • 可以通过“性别”属性(“男性”、“女性”、“指定”)过滤收件人; 可以通过“语言”属性过滤收件人(与“L10n”插件集成); 可以查看邮件列表和邮件进度状态; 在邮件列表中,您可以暂停已开始的邮件或...
  • 手机发送消息

    万次阅读 2006-02-17 11:25:00
    通过移动网关发送消息,使用该方法不需要附加的硬件,但是需要到电信部门申请网关,比较适用于一些大型的网络通讯公司开发,目前华为,中兴等公司就做的这方面的工作,并且还有相应的开发包供开发人员使用. 2.在电脑上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,762
精华内容 26,704
关键字:

如何取消未发送的消息