symfony 8.2可通过实现propagatedstampinterface的自定义戳,把租户或追踪上下文传给处理器派发的后续消息;需要串联日志时,再启用identity_stamps。两者分别解决业务上下文和因果标识,适用于要求php 8.4以上的8.2开发测试环境。
让上下文戳随消息传播
自定义戳保存必要的租户标识,在首次dispatch时附加。后续消息由该处理器派发时,可继承它;官方支持在业务消息参数后接收戳或整个Envelope。
use Symfony\Component\Messenger\Stamp\PropagatedStampInterface;
final class TenantStamp implements PropagatedStampInterface
{
public function __construct(public readonly string $id) {}
}
$bus->dispatch(new ImportCatalog($path), [new TenantStamp($tenantId)]);

Symfony 8.2官方示例文档截图。
为同一条消息流添加日志关联
需要消息身份信息时,在Messenger配置中启用下面选项。它默认关闭,因为启用会改变序列化的Envelope;升级时需同时核对生产者、消费者及存量队列。
# config/packages/messenger.yaml
framework:
messenger:
identity_stamps: true

Symfony 8.2官方示例文档截图。
分别读取三个标识
MessageIdStamp标识一条消息,重试和回放时保持;CausationStamp指向派发当前消息的上游消息;CorrelationStamp把整条流程关联起来。
这些标识可写入项目日志,用于还原消息关系。租户戳只是上下文,具体资源访问仍需由业务层按租户权限判断。











