使用 Redis 作为消息队列 - Redis Stream

十来天前写过一篇 Redis 之前如何曲线的方式用作消息队列 使用 Redis 作为消息队列 - Pub/Sub, List, SortedSet. 只能说简单的使用方式勉强还行,离真正意义上的消息队列有些距离。而自 Redis 5.0 加入了 Stream 就更进一步,可望朝着作为正规消息队列的 At most once, At least once, 和 Exactly once 方向迈进。

如果以 Serverless 方式使用 AWS 的 Redis, 那么既然用到高级消息队列的功能,还能省去使用 AmazonMQ(ActiveMQ 或 RabbitMQ) 或 MSK(Kafka) 的高成本。

Redis stream 数据结构像是一个 append-only 日志,但又添加了 O(1) 的随机访问和复杂的消费策略,如消息分组。

Redis Stream 的每条消息会有一个唯一 ID, 支持消费组, Redis 用以支持 Stream 的一系列命令是 X 为前缀的, 完整的 Stream 命令列表阅读全文 >>

JMS 使用 ActiveMQ 传送文件

这里使用的 MQ 中间件是开源的 ActiveMQ,我们没有采用 BytesMessage 来按字节传送文件,而是 ActiveMQ 为我们提供了 org.apache.activemq.BlobMessage,可以用它来传送大对象。org.apache.activemq.ActiveMQSession 中有以下几个创建 BlobMessage 对象的方法:

createBlobMessage(URL url)

createBlobMessage(URL url, boolean deletedByBroker)

createBlobMessage(File file)

createBlobMessage(InputStream in)

接收到 BlobMessage 消息后,可以调用其 getInputStream() 方法获得数据,然后写成磁盘文件,文件名、文件大小等可通过 Message 的 getXxxProperty("Property.Name") 取的。 阅读全文 >>

研究 WebSphere MQ (Workflow) 时在网上幸遇IBM技术支持工程师

    在公司加入了一个新的项目组,被分配去研究 WebSphere MQ Workflow,Workflow是有些基本的了解,但是MQ和JMS还不是很清楚,更主要的是环境不知道怎么去搭建,也不知道MQ与Workflow有什么关系。
    最开始只知道有一个软件是WebSphere MQ Workflow,于是安装它吧,没想我无论是选择安装服务器端还是客户端都提示我需要MQSeries这个东西,我该到哪儿去找这个东西呢?而此时我旁边的同事却把Workflow给装上了,怎么回事呢?他说他的添加删除程序里有一个WebSphere  MQ,他也不知道是几时安装的,查查安装路径才知道是WAS5.1自己带的一个MQ。于是我也装上WAS 5.1的MQ部件,果然Workflow也能安装上了。 阅读全文 >>