Calling Developers!
We are reenergizing our code contribution process! Learn More

What are the Slack Archives?

It’s a history of our time together in the Slack Community! There’s a ton of knowledge in here, so feel free to search through the archives for a possible answer to your question.

Because this space is not active, you won’t be able to create a new post or comment here. If you have a question or want to start a discussion about something, head over to our categories and pick one to post in! You can always refer back to a post from Slack Archives if needed; just copy the link to use it as a reference..

Hello guys, I recently discovered that pushing and popping items to/from the Queue should only be d

Options
U048WDEP3R7
U048WDEP3R7 Posts: 217 🧑🏻‍🚀 - Cadet

Hello guys,

I recently discovered that pushing and popping items to/from the Queue should only be done through Zed. Just for my knowledge, can someone please tell me what's the use of Client/Queue module? I am assuming the modules available in Client folder are supposed to be accessable by Glue, Zed and Yves. If Queue is supposed to be accessed by Zed only, why there is a Client module for it?

Comments

  • fsmeier
    fsmeier Senior Software Engineer & Developer Enablement Advocate Sprykee Posts: 1,034 ⚖️ - Guardians (admin)
    edited November 2022
    Options

    Hey,
    pre-text: every business use-case is different and some do not allow you to follow certain rules/conventions/suggestions - but every rule-breaking comes normally with a trade-off / cost.

    By concept Glue and Yves should not contain business logic. Just mapping and displaying -> so really just serving data fast in the correct format. For Yves to serve it with html and for Glue to serve it restful in an api format of your choice.

    If you see Glue and Yves as “Presentation Layer” to read data fast and display it -> Why should the presentation layer access a queue in any case? (Normally I would say there should no use-case for this. but see my pre-text)

    Client is more or less a communication layer in the view of the layered architecture (https://docs.spryker.com/docs/scos/dev/architecture/modules-and-layers.html).
    Communication between services. So for example to be used to communicate between Back Office (Zed application layer) and the queue service.
    At the same time there is a CustomerClient to get customer data from a source. Both clients are accessible (code wise) from Zed, Yves & Glue, but you can not use the CustomerClient in Zed because it is Customer-session dependent. In Zed there is no customer-session ootb.

    So long story short: Client is a namespace which can be used by Yves, Glue & Zed (and Client itself) but not every client should be used by every application layer, even if accessible 🙂