# Broker

Published articles for Broker.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Why Kafka retention.ms can delay message deletion

DevFeed: [Why Kafka retention.ms can delay message deletion](<https://devfeed.tech/articles/why-your-kafka-topic-ignores-retention-ms-and-how-to-fix-it-31403.md>)

Original publisher: [Read original article](<https://developers.redhat.com/articles/2026/09/16/why-your-kafka-topic-ignores-retentionms-and-how-fix-it>)

Author: Rogerio Santos

Published: 2026-09-16T13:05:06Z

Content type: tutorial

Language: en

Sources: [Red Hat](<https://devfeed.tech/sources/red-hat.md>), [Red Hat Developer](<https://devfeed.tech/sources/red-hat-developer.md>)

Topics: [Kafka](<https://devfeed.tech/topics/kafka.md>), [Apache-Kafka](<https://devfeed.tech/topics/apache-kafka.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [file](<https://devfeed.tech/topics/file.md>), [Event-Streaming](<https://devfeed.tech/topics/event-streaming.md>)

Tags: [broker](<https://devfeed.tech/tags/broker.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [diagnose](<https://devfeed.tech/tags/diagnose.md>), [event-driven](<https://devfeed.tech/tags/event-driven.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [retention](<https://devfeed.tech/tags/retention.md>), [storage](<https://devfeed.tech/tags/storage.md>), [stream-processing](<https://devfeed.tech/tags/stream-processing.md>)

### AI overview

This guide explains why Kafka messages can remain readable beyond a topic's retention.ms setting. Kafka deletes closed log segments rather than individual messages, and the active segment and continuous writes can delay removal of older records.

### Source excerpt

A customer opened a support case with a deceptively simple complaint: a Kafka topic was configured with a 12-hour retention (retention.ms), yet messages produced on July 24 were still readable 4 days later, on July 28. Nothing was broken. The broker logged no errors. The retention policy was working as designed, but the segment layout and continuous write pattern delayed when the old records could actually be removed. The post Why your Kafka topic ignores retention.ms (and how to fix it) appeared first on Red Hat Developer.

## We turned off Pub/Sub and nobody noticed

DevFeed: [We turned off Pub/Sub and nobody noticed](<https://devfeed.tech/articles/we-turned-off-pub-sub-and-nobody-noticed-12060.md>)

Original publisher: [Read original article](<https://incident.io/blog/we-turned-off-pub-sub-and-nobody-noticed>)

Author: Patrick Hamann; Mike Fisher

Published: 2026-08-11T13:56:40Z

Content type: article

Language: en

Sources: [The incident.io Blog](<https://devfeed.tech/sources/the-incident-io-blog.md>)

Topics: [event driven](<https://devfeed.tech/topics/event-driven.md>), [Messaging](<https://devfeed.tech/topics/messaging.md>), [Publish-subscribe pattern](<https://devfeed.tech/topics/pubsub.md>), [Availability](<https://devfeed.tech/topics/availability.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Apache Pulsar](<https://devfeed.tech/topics/pulsar.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [availability](<https://devfeed.tech/tags/availability.md>), [broker](<https://devfeed.tech/tags/broker.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [event-driven](<https://devfeed.tech/tags/event-driven.md>), [incident](<https://devfeed.tech/tags/incident.md>), [incident-channel](<https://devfeed.tech/tags/incident-channel.md>), [incident-management](<https://devfeed.tech/tags/incident-management.md>), [incident-response](<https://devfeed.tech/tags/incident-response.md>), [messaging](<https://devfeed.tech/tags/messaging.md>), [outage](<https://devfeed.tech/tags/outage.md>), [post-mortem](<https://devfeed.tech/tags/post-mortem.md>), [production](<https://devfeed.tech/tags/production.md>), [scale](<https://devfeed.tech/tags/scale.md>), [slack](<https://devfeed.tech/tags/slack.md>), [slack-incident](<https://devfeed.tech/tags/slack-incident.md>)

### AI overview

This developer article explains how incident.io made its predominantly event-driven platform more resilient by adding a secondary message broker alongside Google Cloud Pub/Sub. It describes the role of message brokers and publish-subscribe processing, the risks of a single point of failure, and the successful production test in which Pub/Sub was turned off without affecting customers.

### Source excerpt

Our entire event-driven platform ran through a single message broker, which made it a single point of failure. So we added a second one. This is the story of building an event load balancer, the queuing theory behind it, and the final chaos test where we turned off Pub/Sub in production and nobody noticed.

## Instrumenting distributed messaging: The fallacy of exactly once delivery

DevFeed: [Instrumenting distributed messaging: The fallacy of exactly once delivery](<https://devfeed.tech/articles/instrumenting-distributed-messaging-the-fallacy-of-exactly-once-delivery-39577.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/25-instrumenting-distributed-messaging-exactly-once-delivery/>)

Author: hello@ankit-rana.com

Published: 2026-05-17T00:00:00Z

Content type: opinion

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [Kafka](<https://devfeed.tech/topics/kafka.md>), [Messaging](<https://devfeed.tech/topics/messaging.md>), [Network](<https://devfeed.tech/topics/network.md>), [Latency](<https://devfeed.tech/topics/latency.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [broker](<https://devfeed.tech/tags/broker.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [idempotency](<https://devfeed.tech/tags/idempotency.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [latency](<https://devfeed.tech/tags/latency.md>), [messaging](<https://devfeed.tech/tags/messaging.md>), [network](<https://devfeed.tech/tags/network.md>)

### AI overview

The article argues that exactly-once delivery cannot be guaranteed by an unreliable network's physical transport layer. It explains that Kafka's exactly-once semantics use transactional coordination, additional network round trips, and disk fsyncs, and recommends at-least-once delivery with idempotent consumers.

### Source excerpt

There is no physical mechanism for exactly-once delivery over an unreliable network. If the sender does not receive an acknowledgement it can drop the message, giving at-most-once, or resend it, giving at-least-once. Those are the only two options. Kafka's exactly-once semantics buy the illusion with a transactional wrapper costing extra round trips and forced fsyncs, so configure brokers for at-least-once and make consumers fiercely idempotent instead.

## Keycloak 26.5.5 released

DevFeed: [Keycloak 26.5.5 released](<https://devfeed.tech/articles/keycloak-26-5-5-released-31761.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2026/03/keycloak-2655-released>)

Author: Keycloak Team

Published: 2026-03-05T00:00:00Z

Content type: release

Language: en

Sources: [Keycloak Blog](<https://devfeed.tech/sources/keycloak-blog.md>)

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [saml](<https://devfeed.tech/topics/saml.md>), [Security](<https://devfeed.tech/topics/security.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [broker](<https://devfeed.tech/tags/broker.md>), [cve](<https://devfeed.tech/tags/cve.md>), [download](<https://devfeed.tech/tags/download.md>), [idm](<https://devfeed.tech/tags/idm.md>), [idp](<https://devfeed.tech/tags/idp.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [keycloak-release](<https://devfeed.tech/tags/keycloak-release.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [login](<https://devfeed.tech/tags/login.md>), [migration-guide](<https://devfeed.tech/tags/migration-guide.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [release](<https://devfeed.tech/tags/release.md>), [saml](<https://devfeed.tech/tags/saml.md>), [security](<https://devfeed.tech/tags/security.md>), [sso](<https://devfeed.tech/tags/sso.md>)

### AI overview

Keycloak 26.5.5 was released on March 5, 2026. The release includes security fixes for SAML broker authentication bypass, disabled identity provider enforcement, disabled SAML identity provider login, and encrypted assertion injection.

### Source excerpt

To download the release go to Keycloak downloads. Upgrading Before upgrading refer to the migration guide for a complete list of changes. All resolved issues Security fixes #46909 CVE-2026-3047 SAML broker: Authentication bypass due to disabled SAML client completing IdP-initiated login #46910 CVE-2026-3009 Improper Enforcement of Disabled Identity Provider in IdentityBrokerService #46911 CVE-2026-2603 Disabled SAML IdP still allows IdP-initiated broker login #46912 CVE-2026-2092 saml broker encrypted assertion injection

## Lightweight MQTT Broker for ESP32: Mosquitto ported to ESP-IDF

DevFeed: [Lightweight MQTT Broker for ESP32: Mosquitto ported to ESP-IDF](<https://devfeed.tech/articles/lightweight-mqtt-broker-for-esp32-mosquitto-ported-to-esp-idf-13700.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/2025/05/esp-idf-mosquitto-port/>)

Author: John Lee

Published: 2025-05-28T00:00:00Z

Content type: article

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [ESP32](<https://devfeed.tech/topics/esp32.md>), [MQTT](<https://devfeed.tech/topics/mqtt.md>), [ESP-IDF](<https://devfeed.tech/topics/esp-idf.md>), [Internet of things](<https://devfeed.tech/topics/iot.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Home Assistant](<https://devfeed.tech/topics/home-assistant.md>), [P2P](<https://devfeed.tech/topics/p2p.md>), [TLS (Transport Layer Security)](<https://devfeed.tech/topics/tls.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [broker](<https://devfeed.tech/tags/broker.md>), [edge-computing](<https://devfeed.tech/tags/edge-computing.md>), [esp](<https://devfeed.tech/tags/esp.md>), [esp-idf](<https://devfeed.tech/tags/esp-idf.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [home-assistant](<https://devfeed.tech/tags/home-assistant.md>), [iot](<https://devfeed.tech/tags/iot.md>), [mqtt](<https://devfeed.tech/tags/mqtt.md>), [p2p](<https://devfeed.tech/tags/p2p.md>), [security](<https://devfeed.tech/tags/security.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tls](<https://devfeed.tech/tags/tls.md>)

### AI overview

This article introduces a lightweight port of the Eclipse Mosquitto MQTT broker to ESP-IDF for ESP32 devices. It describes support for TLS and TCP transports and outlines uses including private local IoT networks, on-device MQTT testing, and bridged brokers over peer-to-peer connections.

### Source excerpt

Mosquitto - the industry-standard MQTT broker - has been ported to ESP-IDF. Its lightweight version retains Mosquitto's core functionality and security features to run on resource-constrained IoT devices. This MQTT broker is ideal for edge computing, testing, and standalone IoT deployments. In this article, we will do an overview and show you how to get started.

## Hacking into a Toyota/Eicher Motors insurance company by exploiting their premium calculator website

DevFeed: [Hacking into a Toyota/Eicher Motors insurance company by exploiting their premium calculator website](<https://devfeed.tech/articles/hacking-into-a-toyota-eicher-motors-insurance-company-by-exploiting-their-premium-calculator-website-32607.md>)

Original publisher: [Read original article](<https://eaton-works.com/2024/01/17/ttibi-email-hack/>)

Author: Eaton

Published: 2024-01-17T16:25:39Z

Content type: article

Language: en

Sources: [Eaton Works Feed](<https://devfeed.tech/sources/eaton-works-feed.md>)

Topics: [Hacking](<https://devfeed.tech/topics/hacking.md>), [API](<https://devfeed.tech/topics/api.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Microsoft](<https://devfeed.tech/topics/microsoft.md>), [passwords](<https://devfeed.tech/topics/passwords.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Website](<https://devfeed.tech/topics/website.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [broker](<https://devfeed.tech/tags/broker.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [hacking](<https://devfeed.tech/tags/hacking.md>), [india](<https://devfeed.tech/tags/india.md>), [insurance](<https://devfeed.tech/tags/insurance.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [password](<https://devfeed.tech/tags/password.md>)

### AI overview

A security report describes how a vulnerable API on Toyota Tsusho Insurance Broker India's premium calculator website exposed Microsoft corporate cloud credentials. The exposed account lacked two-factor authentication and contained customer emails, insurance documents, password reset links, and OTPs. Other Microsoft cloud resources were also accessible.

### Source excerpt

A vulnerable API on Toyota Tsusho Insurance Broker India's premium calculator website exposed Microsoft corporate cloud credentials.

## What's New in Apache Pulsar 3.1.0

DevFeed: [What's New in Apache Pulsar 3.1.0](<https://devfeed.tech/articles/what-s-new-in-apache-pulsar-3-1-0-12757.md>)

Original publisher: [Read original article](<https://pulsar.apache.org/blog/2023/10/10/announcing-apache-pulsar-3-1/>)

Author: tison

Published: 2023-10-10T00:00:00Z

Content type: release

Language: en

Sources: [Apache Pulsar Blog](<https://devfeed.tech/sources/apache-pulsar-blog.md>)

Topics: [Apache Pulsar](<https://devfeed.tech/topics/pulsar.md>), [Compression](<https://devfeed.tech/topics/compression.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>)

Tags: [apache](<https://devfeed.tech/tags/apache.md>), [broker](<https://devfeed.tech/tags/broker.md>), [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [clusters](<https://devfeed.tech/tags/clusters.md>), [compression](<https://devfeed.tech/tags/compression.md>), [contributors](<https://devfeed.tech/tags/contributors.md>), [customization](<https://devfeed.tech/tags/customization.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [feature](<https://devfeed.tech/tags/feature.md>), [load-balancing](<https://devfeed.tech/tags/load-balancing.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [release](<https://devfeed.tech/tags/release.md>), [retention](<https://devfeed.tech/tags/retention.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

Apache Pulsar 3.1 is a feature release shaped by more than 80 contributors and over 360 commits. The documented changes include pluggable topic compaction, customizable topic-bundle partition assignment, and a size threshold for compressing metadata.

### Source excerpt

The Apache Pulsar community announces the release of Apache Pulsar 3.1, a new feature release! This is a remarkable community effort, with over 80 contributors submitting more than 360 commits for feature enhancements and bug fixes. We would like to thank all of them for their contributions!

## What's New in Apache Pulsar 2.10.4

DevFeed: [What's New in Apache Pulsar 2.10.4](<https://devfeed.tech/articles/what-s-new-in-apache-pulsar-2-10-4-12750.md>)

Original publisher: [Read original article](<https://pulsar.apache.org/blog/2023/04/19/Apache-Pulsar-2-10-4/>)

Author: liangyepianzhou, Anonymitaet, momo-jun

Published: 2023-04-19T00:00:00Z

Content type: article

Language: en

Sources: [Apache Pulsar Blog](<https://devfeed.tech/sources/apache-pulsar-blog.md>)

Topics: [Apache Pulsar](<https://devfeed.tech/topics/pulsar.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Release notes](<https://devfeed.tech/topics/release-notes.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>)

Tags: [apache](<https://devfeed.tech/tags/apache.md>), [broker](<https://devfeed.tech/tags/broker.md>), [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [concurrent](<https://devfeed.tech/tags/concurrent.md>), [contributors](<https://devfeed.tech/tags/contributors.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [performance](<https://devfeed.tech/tags/performance.md>), [releases](<https://devfeed.tech/tags/releases.md>), [subscriptions](<https://devfeed.tech/tags/subscriptions.md>)

### AI overview

Apache Pulsar 2.10.4 introduces improvements and bug fixes contributed through 12 commits. Highlights include better Key_Shared subscription performance, improved broker shutdown error handling, corrected cursor positioning, reduced lock contention with concurrent subscriptions, and support for deleting partitioned topics.

### Source excerpt

The Apache Pulsar community releases version 2.10.4! 37 contributors provided improvements and bug fixes that delivered 12 commits. Thanks for all your contributions.

## What's New in Apache Pulsar 2.11

DevFeed: [What's New in Apache Pulsar 2.11](<https://devfeed.tech/articles/what-s-new-in-apache-pulsar-2-11-12741.md>)

Original publisher: [Read original article](<https://pulsar.apache.org/blog/2023/01/20/Apache-Pulsar-2-11-0/>)

Author: Technoboy-, momo-jun

Published: 2023-01-20T00:00:00Z

Content type: article

Language: en

Sources: [Apache Pulsar Blog](<https://devfeed.tech/sources/apache-pulsar-blog.md>)

Topics: [Apache Pulsar](<https://devfeed.tech/topics/pulsar.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Release notes](<https://devfeed.tech/topics/release-notes.md>), [Compression](<https://devfeed.tech/topics/compression.md>), [race-condition](<https://devfeed.tech/topics/race-condition.md>)

Tags: [apache](<https://devfeed.tech/tags/apache.md>), [broker](<https://devfeed.tech/tags/broker.md>), [community](<https://devfeed.tech/tags/community.md>), [compression](<https://devfeed.tech/tags/compression.md>), [contributors](<https://devfeed.tech/tags/contributors.md>), [race-condition](<https://devfeed.tech/tags/race-condition.md>), [releases](<https://devfeed.tech/tags/releases.md>)

### AI overview

Apache Pulsar 2.11 introduces feature enhancements and fixes from 61 contributors across 1,617 commits. Highlights include upgrading the server Java build version to 17, chunking with shared subscriptions, pluggable topic factories, configurable compression, metadata synchronization across clusters, and producer and consumer memory-management improvements.

### Source excerpt

The Apache Pulsar community releases version 2.11! 61 contributors provided feature enhancements and fixes that delivered 1617 commits. Thanks for all your contributions.

## Kafka 的设计与实践思考

DevFeed: [Kafka 的设计与实践思考](<https://devfeed.tech/articles/kafka-40994.md>)

Original publisher: [Read original article](<https://blog.joway.io/posts/kafka-design-practice/>)

Author: Joway

Published: 2018-04-16T00:00:00Z

Content type: tutorial

Language: zh

Sources: [Random Thoughts](<https://devfeed.tech/sources/random-thoughts.md>)

Topics: [Kafka](<https://devfeed.tech/topics/kafka.md>), [Replication](<https://devfeed.tech/topics/replication.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [broker](<https://devfeed.tech/tags/broker.md>), [data](<https://devfeed.tech/tags/data.md>), [file](<https://devfeed.tech/tags/file.md>), [index](<https://devfeed.tech/tags/index.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [leader](<https://devfeed.tech/tags/leader.md>), [partition](<https://devfeed.tech/tags/partition.md>), [replication](<https://devfeed.tech/tags/replication.md>), [sync](<https://devfeed.tech/tags/sync.md>), [tech](<https://devfeed.tech/tags/tech.md>), [zookeeper](<https://devfeed.tech/tags/zookeeper.md>)

### AI overview

A Chinese-language technical article presents a personal summary of Kafka's architecture, internal components, storage design, and APIs. It explains the roles of ZooKeeper, brokers, partitions, replication, leaders, ISR, offsets, segments, sparse indexes, and message access.

### Source excerpt

前几天看了 librdkafka 的官方文档，这篇文档不仅仅讲解了如何使用 Kafka ，某种程度也讲解了分布式系统实现的难点和使用细节，故而让我对 Kafka 的实现原理产生了浓厚的兴趣。 这篇文章从 Kafka 的设计到使用做了一些个人总结，围绕真正实践场景，探寻其设计上的智慧与妥协。 设计 架构设计 Zookeeper Zookeeper 存储了 Kafka 集群状态信息 。 Zookeeper 还负责从 Broker 中选举出一个机器作为 Controller, 并确保其唯一性。 同时, 当 Controller 宕机时, 再选举一个新的 。

## Kafka, a walking skeleton

DevFeed: [Kafka, a walking skeleton](<https://devfeed.tech/articles/kafka-a-walking-skeleton-26067.md>)

Original publisher: [Read original article](<https://blog.arkey.fr/2017/04/29/kafka-a-walking-skeleton/>)

Author: brice.dutheil@gmail.com (Brice Dutheil)

Published: 2017-04-29T00:00:00Z

Content type: article

Language: fr

Sources: [The Coffee Workshop](<https://devfeed.tech/sources/the-coffee-workshop.md>)

Topics: [Kafka](<https://devfeed.tech/topics/kafka.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Publish-subscribe pattern](<https://devfeed.tech/topics/pubsub.md>), [Hadoop](<https://devfeed.tech/topics/hadoop.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [broker](<https://devfeed.tech/tags/broker.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [messages](<https://devfeed.tech/tags/messages.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [performance](<https://devfeed.tech/tags/performance.md>), [production](<https://devfeed.tech/tags/production.md>), [queuing](<https://devfeed.tech/tags/queuing.md>)

### AI overview

This French article introduces Apache Kafka through a minimal end-to-end implementation, based on Kafka 0.9. It explains Kafka's origins at LinkedIn and describes its performance, durable message retention, scalability, fault resilience, and support for queuing and publish-subscribe messaging.

### Source excerpt

Ce blog post est une republication de mon article sur Kafka parut dans le magazine Programmez numéro 196 en mai 2016 (pages 70-73). Il se base sur la version 0.9 de Kafka.

## Disque: A Message Broker Designed for Reliable Message Delivery

DevFeed: [Disque: A Message Broker Designed for Reliable Message Delivery](<https://devfeed.tech/articles/adventures-in-message-queues-20679.md>)

Original publisher: [Read original article](<http://antirez.com/news/88>)

Published: 2015-03-15T22:32:15Z

Content type: article

Language: en

Sources: [Antirez](<https://devfeed.tech/sources/antirez.md>)

Topics: [Redis](<https://devfeed.tech/topics/redis.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [broker](<https://devfeed.tech/tags/broker.md>), [message-queue](<https://devfeed.tech/tags/message-queue.md>), [queue](<https://devfeed.tech/tags/queue.md>), [redis](<https://devfeed.tech/tags/redis.md>)

### AI overview

The article introduces Disque, an in-development message broker, and explains why developers often use Redis as a message queue. It discusses the differences between Redis data structures and immutable messages, along with at-most-once and at-least-once delivery semantics.

### Source excerpt

EDIT: In case you missed it, Disque source code is now available at http://github.com/antirez/disque It is a few months that I spend ~ 15-20% of my time, mostly hours stolen to nights and weekends, working to a new system. It's a message broker and it's called Disque. I've an implementation of 80% of what was in the original specification, but still I don't feel like it's ready to be released. Since I can't ship, I'll at least blog... so that's the story of how it started and a few details about what it is. ~ First steps ~ Many developers use Redis as a message queue, often wrappered via some library abstracting away Redis low level primitives, other times directly building a simple, ad-hoc queue, using the Redis raw API. This use case is covered mainly using blocking list operations, and list push operations. Redis apparently is at the same time the best and the worst system to use like that. It's good because it is fast, easy to inspect, deploy and use, and in many environments it was already one piece of the infrastructure. However it has disadvantages because Redis mutable data structures are very different than immutable messages. Redis HA / Cluster tradeoffs are totally biased towards large mutable values, but the same tradeoffs are not the best ones to deal with messages. One thing that is important to guarantee for a message broker is that a message is delivered either at least one time, or at most one time. In short given that to guarantee an exact single delivery of a message (where for delivery we intent a message that was received *and* processed by a worker) is practically impossible, the choices are that the message broker is able to guarantee either 0 or 1 deliveries, or 1 to infinite deliveries. This is often referred as at-most-once semantics, and at-least-once semantics. There are use cases for the first, but the most interesting and practical semantics is the latter, that is, to guarantee that a message is delivered at least one time, and deliver mu