初识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()
  • 开启两个消费者进程。

  • 启动生产者发送消息


相关推荐
雾岛听蓝几秒前
Qt按钮与标签控件详解
开发语言·经验分享·笔记·qt
m0_640309301 分钟前
如何大幅提升 Google Sheets 数据库更新脚本的执行效率
jvm·数据库·python
Greyson11 分钟前
CSS如何实现单选按钮自定义样式_利用伪元素隐藏默认UI
jvm·数据库·python
黑牛儿3 分钟前
AI Agent\+PHP实现智能接口限流,避开算力成本陷阱(结合今日AI热点)
开发语言·人工智能·php
2401_835956813 分钟前
Go语言怎么防SQL注入_Go语言SQL注入防护教程【深入】
jvm·数据库·python
郝学胜-神的一滴3 分钟前
Softmax 从入门到精通:多分类激活函数的优雅解法
人工智能·python·算法·机器学习·分类·数据挖掘
XMYX-05 分钟前
15 - Go 泛型(Generics):从入门到实战
开发语言·golang
m0_514520575 分钟前
宝塔面板怎样实现数据库的多地异地自动备份_结合阿里云OSS与定时任务插件
jvm·数据库·python
Halo_tjn6 分钟前
Java 内部类
java·开发语言·算法
qq_334563556 分钟前
golang如何优化磁盘IO性能_golang磁盘IO性能优化思路
jvm·数据库·python