-
Notifications
You must be signed in to change notification settings - Fork 437
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Too minimalistic approach for config documentation #838
Comments
You're welcome to provide improvements to documentation. As with many open-source projects, oftentimes documentation is satisfactory to the one writing the actual library, but not for end users - which is obviously due to the fact that author does have an understanding of what code does and "assumes" knowledge of it's internals. At the very least please provide links to documentation pages that were confusing for you. |
It is totally hopeless idea to let person who struggle with bundle create documentation.
That's why i created issue - to announce that there is a need.
It is also funny because each of documentation available (official github repo or readthedocs service) has different and not up to date docs, so if you need URL, each one available is confusing. Issue is about config documentation, config is documented in one chapter, how can i be more precise? https://github.com/php-enqueue/enqueue-dev/blob/master/docs/bundle/config_reference.md |
Quite the contrary. You were looking for a particular option or configuration value and was unable to deduce what it stands for or where it can be found. As I said - even though I'm only "responsible" for Kafka part of library - I can imagine it might be difficult for maintainer to cater to everyone. Usually https://github.com/php-enqueue/enqueue-dev/blob/master/docs/bundle/quick_tour.md file is sufficient for most basic configurations, configuration reference that you have linked is just that - a config reference. Certainly it can be improved, but keep in mind we're spending our private time doing so - so pointing us in the right direction as specifically as possible is more than welcome. If you want to discuss it further then drop me a message on gitter, so we don't pollute this issue with just our conversation. Just keep in mind I might not be online and I might not be able to answer your questions (since, again, I'm officially only looking after Kafka part of enqueue). |
Thanks, i do.
|
I also currently struggle with the docs. If you don't mind, I will write my specific problems here. Or I can create separate issue from them if you want to keep this discussion focused on different topic. 1. Transport vs ClientOnly during writing this comment I realized what is the difference between Client and Transport. I suggest to start the Quick Tour guide with section called Transport vs Client. This section would first pinpoint that 2. The documentation of message production using the Symfony bundle is not clear about the situation when there are multiple
|
@sustmi thanks, I'll take a detailed look in the evening :) |
This may seem out-of-topic but since @damianprzygodzki already mentioned the poorly documented 5. Why no messages arrived to my Kafka topic and what is router?I am trying to send a message to a specific Kafka topic. I get no errors or warnings but no messages arrived to the topic yet. My
and I am sending the message like this:
where I tried to do some debugging and I found that this code gets executed: https://github.com/php-enqueue/enqueue-dev/blob/0.9.9/pkg/enqueue/Client/Driver/GenericDriver.php#L62 It looks like the topic name is set to |
To clarify it on the spot: topic as enqueue understands it is NOT Kafka topic. Topic set in |
Maybe I got the whole Enqueue library wrong. But now I have a feeling that Enqueue is actually one level of abstraction higher. Instead of comparing it to a Database access library it could be compared to Entity-Attribute-Value model that stores all data in a single database table. Am I right? Is this true or am I still misunderstanding this library? |
@sustmi I can't say for sure, since I have only a rough idea how other transports work. Technically speaking, there is not much preventing enqueue from using multiple Kafka topics for it's communication. It's only that at the moment when it was created it simply did not (I'd think about more like a proof of concept that Kafka can work as a transport). There is definitely a lot of improvement that can be made. For example, current implementation of enqueue is unable of listening to multiple Kafka topics, even though the underlying library is capable of such consumption (see #832). Producers still need some love regarding Working with multiple Kafka topics is constrained by unability of current Phprdkafka library to handle Kafka's Admin API (which was introduced in librdkafka in latest 1.0.0 release, which was sometime in february this year?). Otherwise enqueue will rely on topic defaults for those. I'm pretty sure what you described (enqueue using already existing topic implementation in Kafka) is the way Makasim does intend to go with it eventually. EDIT: I'm available most of the time on enqueue's gitter if you want to discuss it further and not pollute this issue thread. |
Auto wire works for default transport\client (explicitly named |
You mistake Enqueue Client Topic with Kafka ones. These are different concepts. The message does not get anywhere because there is no subscribers (processors) listening for that topic. Hence the message goes nowhere. In contrast, if there is no processor for the command an exception is thrown. |
Not all transports support pub\sub out of the box (file, redis, sqs to name a few). So we added a router concept to overcome that limitation. |
It depends on what you are using. If you use Enqueue Client then it is a high level abstraction and |
Doc improvements are very welcome. Please send us A PR |
@makasim can we keep issues open so they show up on the "issues" page? Unless they're really stale. I value the opinion of people here and would like to get as much feedback as possible and incrementally provide PRs :) |
Then we should agree on what stale is. A closed issue is still easy to find with GitHub search. Issues or bugs that stay for long without action are closed with the label "needs work". It would help to find such issues in the future. |
They're still relatively easy to find, but closed state suggests that issue reported has been resolved. I just don't understand your reasoning for closing so many of them despite still expecting some kind of feedback in most of them (please don't take it as criticism, I just might not see your point / reasoning). I'd suggest keeping them open unless they become stale, which in my opinion would be 30 days of no activity, other than maybe requests for feedback. I don't see the cost for keeping them open for a while. Again, I understand that you're under heavy load as maintainer so please don't take it the wrong way. The choice is yours in the end :) |
I am fine keeping them for 30 days. Let's stick to that rule. From my experience, the work is either done right away or never. |
We can use https://github.com/probot/stale if you'd like to have it done automatically, so you won't have to deal with those. Want me to prepare all the configuration and instructions for it for us? |
That would be great |
This is the most frustating PHP package I've ever used. The docs is in shambles, lots of 404 links. I understand that PRs are welcome but I don't think a lot of people are capable to improve them when a lot is entangled, obscured and, simply, a mess. My recommendation to anyone that reads this and wants a simple rabbitMQ wrapper:
Cheers |
Next thing i've found, totally useless - https://github.com/php-enqueue/enqueue-dev/blob/master/docs/transport/null.md. What tools of enqueue it uses? Is it mock of transport or just NULL for everything? I read - it is doing nothing, but in functional testing chapter i see that you are tracing this message. If it is doing nothing than why we are tracing this message? Maybe we should link it with https://github.com/php-enqueue/enqueue-dev/blob/master/docs/bundle/functional_testing.md#null-transport? |
The truth, from what I'm seeing, is that enqueue authors made their own concepts to implement abstraction over different queueing libraries/systems. The problem is they rephrased some industry-standard keywords (like "topic") into their own understanding. It's ok because you can invite rookie users to use queues, but it's enough rarely for a week or two. Eventually everyone ends up saying "ok, thats enough for me" or wanting to do some fine-tuning. Which enqueue doesn't allow. Let the example be RabbitMQ with AMQP direct exchange type – which cannot be accomplished. Other problem is that there are way too many interfaces from different scopes (Enqueue itself, Psr, extension-dependent interfaces...). It's extremely hard even to debug the configuration as @damianprzygodzki mentioned. As a final word – I think the biggest problem is lack of concepts documentation wrote over each queue implementation and "What you can and cannot do". If I would know that before I started using Enqueue – I wouldn't be using it in the first place. |
@damianprzygodzki @cadavre Thanks for the input. I'm currently working on an issue at work which prevents me from starting to work on a PR for this, but I'll take it into account when I give it a go on friday. Thanks for using enqueue, despite all it's flaws. |
Documentation has been moved to github pages (https://php-enqueue.github.io/) and will be subsequently updated. It should be easier to navigate once #870 and #872 are merged. |
@damianprzygodzki @cadavre please review concepts in #863 and let us know if that makes sense to you. You can comment on the PR. Thanks |
@sustmi Just wanted to let you know that despite the fact that this issue is closed I'm still keeping an eye on it and will - hopefully - incrementally adjust the docs with all the comments here. |
@Steveb-p You could reopen it if you think it would be better to keep it that way. |
The feedback on concepts is very welcome. |
Since documentation issues pop up every now and then I'll open it and keep watch on it. If it becomes too cluttered I'll crawl it and move important bits to a separate issue, but for now it's manageable. |
@makasim My own question is regarding Kafka topics and enqueue topics. It has been noted that those are two different things, but should enqueue go towards using multiple of Kafka's topics "inside" a single transport/client? |
To answer the question I need more details on what "Kafka multipe topics" means. Could you send some links where I can read about it ? |
@Steveb-p Thank you. The Key concepts section really helps to better understand the Enqueue library. Nice work! I hope that I will find some time to improve the Symfony bundle part too in order to cover my points 2. and 4. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Be silent, bot! I'll work on it. I promise! :) |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Could anyone please give some examples (or at least some tips) of how each of this options in client config is used and what is difference between them? Didn't find any description here and in comments above. prefix: enqueue
separator: .
app_name: app
router_topic: default
router_queue: default
default_queue: default
$producer->sendEvent('a_topic', 'Hello there!'); What exchange will be used then?
$promise = $producer->sendCommand('a_processor_name', 'Hello there!', $needReply = true); what exchange will be used?
public static function getSubscribedTopics()
{
return ['aTopic'];
} Again, what pattern is used? So basically I don't understand difference between router_topic, router_queue and default_queue. Anyone help, please? |
I am totally confused with documentation that is constructed really poor.
I understand that we have topics to connect messages to processors, but there is no information about connecting this to transport queue. There is also no info about ability of configuration more clients (Clients or topics?). Naming in config is also confusing, like 'routerQueue' vs. 'defaultQueue'.
Wasted lot of time to research it on my own...
The text was updated successfully, but these errors were encountered: