Sentry Queue 与 Symfony Messenger 集成

问题描述 投票:0回答:1

我正在尝试使用 Sentry Queues 设置 Symfony Messenger,但有一段时间没有任何运气。我无法在网上找到有关此特定主题的任何资源。我正在尝试使用哨兵提供的示例,并对其进行了修改,因此它不依赖于消息(至少我这么认为)。但即使看起来最简单的示例也不会将任何队列放入哨兵队列选项卡中。

public function sendMessageToTransport(SendMessageToTransportsEvent $event): void
    {
        $parentSpan = \Sentry\SentrySdk::getCurrentHub()->getSpan();

        if ($parentSpan !== null) {
            $context = \Sentry\Tracing\SpanContext::make()
                ->setOp('queue.publish')
                ->setDescription(SendQuestionConfirmationEmail::class);

            $span = $parentSpan->startChild($context);

            \Sentry\SentrySdk::getCurrentHub()->setSpan($span);

            // Publish your job to the queue
            /*Queue::push($job, [
                'publish_time' => microtime(true),
                'sentry_trace' => \Sentry\getTraceparent(),
                'baggage' => \Sentry\getBaggage(),
            ]);*/

            $span
                ->setData([
                    'messaging.message.id' => '1',
                    'messaging.destination.name' => 'default',
                    'messaging.message.body.size' => 200,
                ])
                ->finish();

            \Sentry\SentrySdk::getCurrentHub()->setSpan($parentSpan);
        }

        $context = \Sentry\continueTrace(
            \Sentry\getTraceparent(),
            \Sentry\getBaggage()
        )->setOp('queue.process')->setName(SendQuestionConfirmationEmail::class);

        $transaction = \Sentry\startTransaction($context);

        \Sentry\SentrySdk::getCurrentHub()->setSpan($transaction);

        try {
            // Continue job processing...
        } catch (\Throwable $e) {
            $transaction->setStatus(\Sentry\Tracing\SpanStatus::internalError());
        }

        $transaction
            ->setData([
                'messaging.message.id' => 1,
                'messaging.destination.name' => 'default',
                'messaging.message.body.size' => 200,
                'messaging.message.receive.latency' => 10,
                'messaging.message.retry.count' => 1,
            ])
            ->finish();
        dump("done");

    }

请注意,我知道这绝对是糟糕的代码,我只需要让它在某个地方运行,而这最终就是这个地方

我将所有内容放入事件处理程序中,这是长时间尝试的结果。我确信事件会正常触发,而且我的哨兵也能正常工作。 (报错就好了)

有人有这方面的经验吗?

php symfony sentry symfony-messenger
1个回答
0
投票

您已经注释掉了

的部分
            // Publish your job to the queue
            /*Queue::push($job, [
                'publish_time' => microtime(true),
                'sentry_trace' => \Sentry\getTraceparent(),
                'baggage' => \Sentry\getBaggage(),
            ]);*/

因此您不会将其推送到队列中,因此您遇到的行为实际上是预期的。取消注释该命令。

© www.soinside.com 2019 - 2024. All rights reserved.