【问题标题】:How to get latest offset of message on Angular 8 with using RxStompService?如何使用 RxStompService 获取 Angular 8 上消息的最新偏移量?
【发布时间】:2021-10-25 09:15:58
【问题描述】:

我有订阅 Kafka 主题的 RxStompService,但是当我从 UI 端更新数据并通过 REST 调用将其发送到后端时,它会显示消息的所有偏移量,这意味着重复消息。有没有办法在订阅时显示消息的最新偏移量?

这是我的 UI 代码;

    ngOnInit(): void {
        this.rxStompService.watch('/topic/notification')
          .subscribe(value => {
            console.log('Received from websocket: ' + value.body);
            this.rows.push({
              outageId: Number(JSON.parse(value.body).outageId),
              stage: JSON.parse(value.body).stage,
              startTime: JSON.parse(value.body).timestamp == undefined ? new Date(parseInt(JSON.parse(value.body).startTime, 10)) : new Date(JSON.parse(value.body).timestamp),
              endTime: JSON.parse(value.body).timestamp == undefined ? (JSON.parse(value.body).endTime == '-' ? '-' : new Date(parseInt(JSON.parse(value.body).endTime, 10)))
                : (JSON.parse(value.body).stage == 'CLOSED' ? new Date(JSON.parse(value.body).timestamp) : '-'),
              type: JSON.parse(value.body).type,
              details: JSON.parse(value.body).details
            });
            this.rows = this.rows.slice(-100);
          });
      }

还有我的 myRxStompConfig;

    import { InjectableRxStompConfig } from '@stomp/ng2-stompjs';
    
    export const myRxStompConfig: InjectableRxStompConfig = {
        brokerURL: 'ws://localhost:8080/websocket',
    
        connectHeaders: {
            login: '',
            passcode: ''
        },
    
        heartbeatIncoming: 0, // Typical value 0 - disabled
        heartbeatOutgoing: 20000, // Typical value 20000 - every 20 seconds
    
        reconnectDelay: 1000,
    
        debug: (msg: string): void => {
            console.log(new Date(), msg);
        }
    };

【问题讨论】:

    标签: angular apache-kafka rxjs apache-kafka-streams stomp


    【解决方案1】:

    据我所知,Apache Kafka 甚至不支持 STOMP,所以我认为您的问题没有实际意义。根据this,Kafka 不支持 STOMP。另外,我在 Kafka 网站上找不到任何对 STOMP 实现的引用。

    【讨论】:

    • 那么,我需要做些什么来解决这个问题呢?我应该为 Angular 使用 Kafka 插件而不是 STOMP 吗?
    • 您可以使用支持 STOMP 的代理吗?我对 Kafka 不是很熟悉,所以我不确定 Angular 的 Kafka 插件是否适合您的需求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多