增强您的应用程序的性能:使用GO消费Symfony Messenger消息
#开源 #go #symfony #性能

介绍

随着应用程序的规模和增长,有效的消息处理对于维持高性能

Symfony Messenger 在派遣消息方面擅长,我介绍了一种工具来增强您的消息消耗过程:Gosumer



利用优化应用程序的性能并无缝处理Symfony Messenger消息的原始力量。

在本文中,我将深入研究 gosumer 的功能,并展示了其实施以证明其功能的示例。

介绍Gosumer

GoSumer是一个尖端的软件包,旨在通过使用GO代码进行有效消费Symfony Messenger消息来增强应用程序的性能。。

构建可与 PostgreSQL AMQP 无缝合作,此工具使开发人员能够简化其消息处理并解锁无与伦比的性能增长。

您可以找到此软件包here的源代码;随时贡献或分享您的反馈!

示例:用Gosumer授权您的应用程序

让我们进入一个说明性示例,以展示Gosumer的作用。

想象您有一个GO应用程序,需要有效地处理传入消息。

使用Gosumer,您只需几行代码即可轻松实现此目标:

package main

import (
"encoding/json"
"log"

"github.com/romaixn/gosumer"
)

type Message struct {
    ID     int `json:"id"`
    Number int `json:"number"`
}

func main() {
    database := gosumer.PgDatabase{
        Host:      "localhost",
        Port:      5432,
        User:      "app",
        Password:  "!ChangeMe!",
        Database:  "app",
        TableName: "messenger_messages",
    }

    err := gosumer.Listen(database, processMessage, Message{})

    if err != nil {
        log.Fatal(err)
    }
}

func processMessage(message any, err chan error) {
    log.Printf("Message received: %v", message)

    jsonData, e := json.Marshal(message)
    if e != nil {
        log.Printf("Error marshalling message: %v", e)
        err <- e

        return
    }

    var msg Message
    e = json.Unmarshal(jsonData, &msg)
    if e != nil {
        log.Printf("Error unmarshalling message: %v", e)
        err <- e

        return
    }

    log.Printf("Sum of %d and %d is %d", msg.ID, msg.Number, msg.ID+msg.Number)

    err <- nil

    return
}

在此示例中,我们定义了一个消息结构,代表传入消息中的数据,它是您在Symfony端(PHP)定义的结构。

之后,我们使用gosumer.listen函数收听所有消息,并通过processMessage进行处理。


一旦处理消息并且没有错误,就会从数据库中删除。
但是,如果在处理过程中发生错误,则不会删除该消息,并且将在以后重新消费。

我已经有一些想法来改善包装的开发人员体验。我已经创建了一些可以check out here的问题。

结论

gosumer可以通过使用GO消费Symfony Messenger消息来帮助您优化应用程序的性能。


通过利用GO 和 Symfony Messenger的力量,您的应用程序将像超级英雄团队一样强大,以提高效率,扩展性能!

随时可以visit GitHub探索该项目并进行测试!我很想听听您的反馈。

在Github上见!