初识TDMQ

目录

一:需求背景

  • 目前公司需要将决策引擎处理的结果, 一部分数据交给下游分析/入黑/通知等功能。因此就需要决策引擎生产结果让多方下游去消费。 而我需要实现下游的一部分功能。

二:相关文档

三:验证TDMQ广播消息

  • 将TDMQ使用配置写入到一个配置文件中: config.py

    python 复制代码
    topic = ''
    tdmq_url = ''
    tdmq_secret_key = ''
  • 编写生产者发送消息:

    python 复制代码
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time   : 2023/7/24 16:28
    # 模拟TDMQ生产者发送消息
    import json
    
    import pulsar
    
    from conf.config import tdmq_secret_key, tdmq_url, topic
    
    
    def produser_send_msg():
        """生产者发送消息"""
        tdmq_client = pulsar.Client(
            authentication=pulsar.AuthenticationToken(tdmq_secret_key),
            service_url=tdmq_url
        )
        producer = tdmq_client.create_producer(
            topic=topic
        )
        send_data = json.dumps({"uniq_id": "1234567890", "project_id": 2})
        producer.send(
            send_data.encode('utf-8'),
            properties={},
            partition_key=''
        )
    
    
    if __name__ == '__main__':
        produser_send_msg()
  • 编写两个消费者, 消费消息(第二个只需要将subscription_name改为sub_topic2)

    python 复制代码
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time   : 2023/7/24 18:55
    # @Author : shanwen.ren
    import pulsar
    
    from conf.config import tdmq_secret_key, tdmq_url, post_fund_topic
    
    tdmq_client = pulsar.Client(
            authentication=pulsar.AuthenticationToken(tdmq_secret_key),
            service_url=tdmq_url
        )
    
    consumer = tdmq_client.subscribe(
        # topic完整路径,格式为persistent://集群(租户)ID/命名空间/Topic名称,从【Topic管理】处复制
        topic=topic,
        # 订阅名称
        subscription_name='sub_topic1'
    )
    
    
    def produser_send_msg():
        """消费者消费消息"""
        # 获取消息
        msg = consumer.receive()
        try:
            # 模拟业务
            print("Received message '{}' id='{}'".format(msg.data(), msg.message_id()))
            # 消费成功,回复ack
            consumer.acknowledge(msg)
        except:
            # 消费失败,消息将会重新投递
            consumer.negative_acknowledge(msg)
    
    
    if __name__ == '__main__':
        while True:
            produser_send_msg()
  • 开启两个消费者进程。

  • 启动生产者发送消息


相关推荐
2401_88445415几秒前
Golang如何写博客系统后端_Golang博客系统教程【技巧】
jvm·数据库·python
2301_779622411 分钟前
JavaScript中利用Range对象实现复杂的文本选择操作
jvm·数据库·python
m0_741481782 分钟前
Go语言怎么做接口签名_Go语言API签名验证教程【精通】
jvm·数据库·python
2401_884454152 分钟前
CSS实现浮动图标与文本居中对齐_配合浮动与flex
jvm·数据库·python
基德爆肝c语言2 分钟前
Qt:显示类控件
开发语言·qt·命令模式
woxihuan1234563 分钟前
SQL统计分组内的所有数据唯一值_使用DISTINCT汇总
jvm·数据库·python
m0_631529825 分钟前
CSS如何利用-disabled伪类禁用交互元素_通过灰度效果提升界面逻辑清晰度
jvm·数据库·python
dFObBIMmai6 分钟前
如何排查SQL存储过程内存溢出_优化大数据量临时表使用
jvm·数据库·python
无限进步_7 分钟前
【C++】深入右值引用:移动语义与完美转发
java·开发语言·c++
gihigo19987 分钟前
C# 绘制直线 圆形 矩形(工业上位机)
开发语言·c#