Skip to content

feature: v2 config amqp, grpc interceptors#72

Open
rustatian wants to merge 10 commits intomasterfrom
feature/amqp-6.0
Open

feature: v2 config amqp, grpc interceptors#72
rustatian wants to merge 10 commits intomasterfrom
feature/amqp-6.0

Conversation

@rustatian
Copy link
Member

@rustatian rustatian commented Feb 17, 2026

Summary by CodeRabbit

  • Documentation
    • Introduces versioned, nested AMQP pipeline configuration (recommended v2) with separate exchange/queue settings, plus v0/v1 legacy compatibility, v3 examples, migration guidance, and read-only RabbitMQ deployment examples.
    • Clarifies producer-only rules, validation/Nack/startup behavior, runtime/RPC notes, and adds navigation "What’s Next" guidance.
    • Adds gRPC interceptors documentation and a cross-reference in the gRPC guide (SUMMARY updated).

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
@rustatian rustatian self-assigned this Feb 17, 2026
Copilot AI review requested due to automatic review settings February 17, 2026 16:33
@coderabbitai
Copy link

coderabbitai bot commented Feb 17, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Introduces versioned, nested AMQP pipeline configuration (recommended config.version: 2) with exchange and queue blocks, preserves legacy flat v0/v1 configs and read-only declare: false mode, adds migration and examples. Also adds gRPC interceptors docs, a new Interceptor interface, and cross-reference links.

Changes

Cohort / File(s) Summary
AMQP docs (primary file)
queues/amqp.md
Replaces flat configuration with versioned nested model (config.version: 2) introducing exchange and queue blocks and options (priority, prefetch, redial_timeout, exchange/queue fields). Adds read-only (declare: false) guidance, runtime/RPC note, migration section, legacy v0/v1 examples, v3/minimal examples, validation hints, and multiple illustrative code blocks.
gRPC docs link & navigation
grpc/grpc.md, SUMMARY.md
Adds cross-reference link to the new interceptors doc and inserts a SUMMARY entry for grpc/interceptors.md.
gRPC interceptors doc & API
grpc/interceptors.md, grpc/api/interfaces.go
New documentation describing the Interceptor contract and usage; introduces Interceptor interface with UnaryServerInterceptor() grpc.UnaryServerInterceptor and Name() string, configuration via grpc.interceptors in .rr.yaml, execution order note, sample plugin code, and build/register/run instructions.

Sequence Diagram(s)

sequenceDiagram
  participant Client as Client
  participant GRPC as gRPC Server
  participant Inter as Interceptor Chain
  participant App as Application Handler

  Client->>GRPC: unary RPC request
  GRPC->>Inter: pass through configured interceptors (reverse order)
  Inter->>Inter: each interceptor may pre-process / short-circuit
  Inter->>App: invoke application handler
  App-->>Inter: response
  Inter-->>GRPC: post-process response
  GRPC-->>Client: final response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped from flat configs into trees,
exchanges nestle, queues sway in breeze,
old keys tucked safe, new versions take flight,
interceptors hum, handling calls right,
carrots of docs — a snug, joyful bite 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: v2 AMQP configuration versioning and gRPC interceptors documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/amqp-6.0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
queues/amqp.md (1)

282-282: ⚠️ Potential issue | 🟡 Minor

Add 'What's Next?' section at document end.

The documentation is missing a 'What's Next?' section with a numbered list of related links. As per coding guidelines, documentation should include this section to guide readers to related content.

📚 Suggested addition

Add after line 282:

## What's Next?

1. [Jobs and Queues Overview](../README.md)
2. [RabbitMQ Documentation](https://www.rabbitmq.com/documentation.html)
3. [AMQP 0-9-1 Model](https://www.rabbitmq.com/tutorials/amqp-concepts.html)
4. [RabbitMQ Tutorials](https://www.rabbitmq.com/getstarted.html)

(Adjust paths and links based on your actual documentation structure)

As per coding guidelines, "Include 'What's Next?' sections at document end with numbered lists of related links in documentation."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@queues/amqp.md` at line 282, Append a final "What's Next?" section to the end
of the AMQP documentation (queues/amqp.md) that contains a numbered list of
related links; specifically add a level-2 header "What's Next?" followed by a
1–4 numbered list linking to "Jobs and Queues Overview" (relative path),
"RabbitMQ Documentation" (https://www.rabbitmq.com/documentation.html), "AMQP
0-9-1 Model" (https://www.rabbitmq.com/tutorials/amqp-concepts.html), and
"RabbitMQ Tutorials" (https://www.rabbitmq.com/getstarted.html); adjust the
relative path for the Jobs and Queues link to match your docs structure and
ensure this section is placed after the existing content at the document end.
🧹 Nitpick comments (1)
queues/amqp.md (1)

119-120: Format the URL as a markdown link for consistency.

The URL is displayed as raw text. For better readability and consistency with other documentation references (e.g., line 29), format it as a markdown link.

📝 Proposed formatting improvement
-Read more about Nack in RabbitMQ official docs: https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue
+Read more about [Nack in RabbitMQ official docs](https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@queues/amqp.md` around lines 119 - 120, The README line "Read more about Nack
in RabbitMQ official docs:
https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue" should use
markdown link syntax for consistency; replace the raw URL with an inline
markdown link (e.g., "Read more about Nack in RabbitMQ official docs: [RabbitMQ
consumer NACKs](https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue)")
in queues/amqp.md where the "Read more about Nack..." text appears.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@queues/amqp.md`:
- Line 282: Append a final "What's Next?" section to the end of the AMQP
documentation (queues/amqp.md) that contains a numbered list of related links;
specifically add a level-2 header "What's Next?" followed by a 1–4 numbered list
linking to "Jobs and Queues Overview" (relative path), "RabbitMQ Documentation"
(https://www.rabbitmq.com/documentation.html), "AMQP 0-9-1 Model"
(https://www.rabbitmq.com/tutorials/amqp-concepts.html), and "RabbitMQ
Tutorials" (https://www.rabbitmq.com/getstarted.html); adjust the relative path
for the Jobs and Queues link to match your docs structure and ensure this
section is placed after the existing content at the document end.

---

Nitpick comments:
In `@queues/amqp.md`:
- Around line 119-120: The README line "Read more about Nack in RabbitMQ
official docs: https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue"
should use markdown link syntax for consistency; replace the raw URL with an
inline markdown link (e.g., "Read more about Nack in RabbitMQ official docs:
[RabbitMQ consumer
NACKs](https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue)") in
queues/amqp.md where the "Read more about Nack..." text appears.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new version 2 AMQP configuration format with nested objects for better organization and adds support for read-only RabbitMQ permissions.

Changes:

  • Introduces config.version: 2 with nested exchange and queue objects for clearer configuration structure
  • Adds declare flags to support RabbitMQ users without configure permission
  • Reorganizes documentation to clearly distinguish between v2 (recommended), legacy flat, and runtime/RPC configuration formats

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

rustatian and others added 3 commits February 17, 2026 17:45
Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@queues/amqp.md`:
- Line 74: The "Version 2 Configuration (Recommended)" section lacks a version
tag; update that heading (the "## Version 2 Configuration (Recommended)"
markdown title) to include the introduced-version marker—e.g., append "
[>=2024.2.0]"—so the documentation clearly indicates which RoadRunner release
added the Version 2 configuration feature.
- Around line 277-281: Add a "What's Next?" section at the end of queues/amqp.md
(after the Migration section mentioning config.version and exchange/queue
declare guidance) containing a numbered list of related links users should
consult next; include links such as an AMQP overview, RabbitMQ permissions and
declaration guidance, configuration versioning details, exchange vs queue docs,
and troubleshooting/FAQ, use relative paths appropriate to the repo structure,
and ensure the section header is exactly "What's Next?" and the items are a
numbered list per documentation guidelines.

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
@rustatian rustatian changed the title feature: v2 config amqp feature: v2 config amqp, grpc interceptors Feb 18, 2026
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (4)
grpc/interceptors.md (2)

67-78: Inconsistent YAML sequence style in execution-order example.

The execution order example uses inline YAML array syntax (["first", "second", "third"]) while every other example in this file uses YAML block sequences (- "item"). Consider making this consistent.

✏️ Proposed fix
 grpc:
-  interceptors: ["first", "second", "third"]
+  interceptors:
+    - "first"
+    - "second"
+    - "third"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@grpc/interceptors.md` around lines 67 - 78, The YAML example in
grpc/interceptors.md uses inline array syntax for interceptors under the
.rr.yaml snippet (grpc: interceptors: ["first", "second", "third"]) which is
inconsistent with the rest of the file; change this to a YAML block sequence
style (use grpc: interceptors: with each interceptor as a `- "name"` entry) so
it matches other examples and keep the execution-order explanation (`third ->
second -> first -> handler`) unchanged.

12-14: Minor style: replace "At the moment" with "Currently".

✏️ Proposed fix
-At the moment, RoadRunner supports unary gRPC interceptors (`grpc.UnaryServerInterceptor`).
+Currently, RoadRunner supports unary gRPC interceptors (`grpc.UnaryServerInterceptor`).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@grpc/interceptors.md` around lines 12 - 14, In the grpc/interceptors.md hint
block replace the phrase "At the moment" with "Currently" (locate the hint that
reads "At the moment, RoadRunner supports unary gRPC interceptors
(`grpc.UnaryServerInterceptor`)." and change only that leading phrase to
"Currently") to address the style suggestion.
queues/amqp.md (2)

190-202: routing_key in read-only fanout example contradicts the documented requirement.

Line 95 states queue.routing_key is "Required when exchange.type != fanout", yet the read-only example sets routing_key: test-1 with type: fanout. While AMQP silently ignores the routing key for fanout exchanges, leaving it in the example contradicts your own documentation and may confuse readers. Consider removing it from the fanout example or adding a comment.

✏️ Proposed fix (remove or annotate)
         queue:
           name: test-1-queue
-          routing_key: test-1
+          routing_key: "" # ignored for fanout exchanges
           durable: true
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@queues/amqp.md` around lines 190 - 202, The example sets queue.routing_key
even though exchange.type is fanout and your doc states queue.routing_key is
required only when exchange.type != fanout; update the read-only fanout example
to either remove the routing_key field entirely from the queue block or add an
inline note that routing_key is ignored for fanout exchanges (e.g., clarify that
exchange.type: fanout means queue.routing_key is not required and will be
ignored) so the example aligns with the documented requirement.

118-120: Format bare URL as a Markdown link.

The hint block at line 119 embeds a raw URL rather than a labelled Markdown link, which reduces readability.

✏️ Proposed fix
 {% hint style="info" %}
-Read more about Nack in RabbitMQ official docs: https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue
+Read more about Nack in the [RabbitMQ consumer Nacks and Requeuing](https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue) documentation.
 {% endhint %}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@queues/amqp.md` around lines 118 - 120, The hint block that currently
contains a bare URL should use a labeled Markdown link for readability; update
the {% hint style="info" %} ... {% endhint %} block so the raw URL is replaced
by a descriptive link text (for example "Read more about Nack in the RabbitMQ
official docs") using Markdown link syntax pointing to
https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue, ensuring the
surrounding hint markup and content remain unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@grpc/interceptors.md`:
- Around line 1-15: Add a version tag to the "gRPC Interceptors" document
indicating when this feature was introduced by inserting a version marker (e.g.,
[>=2024.2.0]) near the top/intro paragraph or the info hint; replace the
placeholder `6.0.0` with the actual release version that first supported unary
gRPC interceptors so the document conforms to the guideline requiring
feature-introduction tags (update the text around the header "gRPC Interceptors"
and the info hint mentioning unary interceptors).

In `@queues/amqp.md`:
- Around line 283-289: In the "What's Next?" section under the "What's Next?"
heading, replace the self-referential anchors in items 2–4 (the links pointing
to amqp.md#read-only-rabbitmq-permissions,
amqp.md#pipeline-configuration-formats, and amqp.md#exchange-settings) with
links to external/related docs (e.g., other queue driver pages like Kafka or
SQS, the general Configuration guide, or the Runtime/RPC and troubleshooting
pages referenced elsewhere) so those three bullets point to other documents
rather than anchors within the current page; keep item 1 (overview-queues.md)
unchanged and ensure link text and numbering remain consistent.

---

Duplicate comments:
In `@queues/amqp.md`:
- Line 74: The "## Version 2 Configuration (Recommended)" heading lacks a
version tag; update that heading in queues/amqp.md (the line with "Version 2
Configuration (Recommended)") to include the appropriate release marker (e.g.,
append " [>=2024.2.0]") so the doc clearly indicates which RoadRunner release
introduced config.version: 2 support.

---

Nitpick comments:
In `@grpc/interceptors.md`:
- Around line 67-78: The YAML example in grpc/interceptors.md uses inline array
syntax for interceptors under the .rr.yaml snippet (grpc: interceptors:
["first", "second", "third"]) which is inconsistent with the rest of the file;
change this to a YAML block sequence style (use grpc: interceptors: with each
interceptor as a `- "name"` entry) so it matches other examples and keep the
execution-order explanation (`third -> second -> first -> handler`) unchanged.
- Around line 12-14: In the grpc/interceptors.md hint block replace the phrase
"At the moment" with "Currently" (locate the hint that reads "At the moment,
RoadRunner supports unary gRPC interceptors (`grpc.UnaryServerInterceptor`)."
and change only that leading phrase to "Currently") to address the style
suggestion.

In `@queues/amqp.md`:
- Around line 190-202: The example sets queue.routing_key even though
exchange.type is fanout and your doc states queue.routing_key is required only
when exchange.type != fanout; update the read-only fanout example to either
remove the routing_key field entirely from the queue block or add an inline note
that routing_key is ignored for fanout exchanges (e.g., clarify that
exchange.type: fanout means queue.routing_key is not required and will be
ignored) so the example aligns with the documented requirement.
- Around line 118-120: The hint block that currently contains a bare URL should
use a labeled Markdown link for readability; update the {% hint style="info" %}
... {% endhint %} block so the raw URL is replaced by a descriptive link text
(for example "Read more about Nack in the RabbitMQ official docs") using
Markdown link syntax pointing to
https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue, ensuring the
surrounding hint markup and content remain unchanged.

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (4)
grpc/interceptors.md (2)

12-13: Minor: "At the moment" → "Currently".

✏️ Suggested wording
-At the moment, RoadRunner supports unary gRPC interceptors (`grpc.UnaryServerInterceptor`).
+Currently, RoadRunner supports only unary gRPC interceptors (`grpc.UnaryServerInterceptor`).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@grpc/interceptors.md` around lines 12 - 13, Replace the phrase "At the
moment" with "Currently" in the sentence that reads "At the moment, RoadRunner
supports unary gRPC interceptors (`grpc.UnaryServerInterceptor`)." in
grpc/interceptors.md so the line reads "Currently, RoadRunner supports unary
gRPC interceptors (`grpc.UnaryServerInterceptor`). This is a simple wording
change — search for the exact phrase "At the moment, RoadRunner supports unary
gRPC interceptors (`grpc.UnaryServerInterceptor`)" and update it.

86-93: Step 4a is absent from the overview list.

The numbered summary at the top of this section lists 6 steps (1–6), but the actual sub-sections introduce a ### 4a) Build RR with Velox (alternative) step that doesn't appear in the overview. This can disorient readers who follow the list as a table of contents.

Consider either adding a note in the overview, or using a {% hint style="info" %} callout inside step 4 to reference the Velox alternative rather than a parallel ### heading:

✏️ Suggested adjustment to overview list
 4. Build RoadRunner.
+   - Alternative: [Build with Velox](`#4a-build-rr-with-velox-alternative`) (no need to edit `plugins.go` every build).
 5. Configure `grpc.interceptors` in `.rr.yaml`.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@grpc/interceptors.md` around lines 86 - 93, The overview list for "Build a
custom RR binary with interceptor (step by step)" is missing a reference to the
"### 4a) Build RR with Velox (alternative)" sub-section; update the overview to
either insert a new item "4a. Build RR with Velox (alternative)" after step 4 or
modify step 4 to include an info callout referencing the Velox alternative
(e.g., a {% hint style="info" %} note inside step 4 pointing to "Build RR with
Velox (alternative)"), so the table-of-contents‑style summary matches the actual
sub-headings.
queues/amqp.md (2)

192-202: Read-only example sets routing_key for a fanout exchange, which is inconsistent with the documented guidance.

The hint at lines 114–116 states that routing_key is only required when exchange.type != fanout. Including it in a fanout example introduces an unnecessary key that contradicts that guidance and may confuse readers about when the field is needed.

✏️ Proposed fix
         queue:
           name: test-1-queue
-          routing_key: test-1
           durable: true
           auto_delete: false
           exclusive: false
           declare: false
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@queues/amqp.md` around lines 192 - 202, The example uses a fanout exchange
but still includes the routing_key field (see queue.name: test-1-queue and
routing_key: test-1), which contradicts the guidance that routing_key is only
required when exchange.type != fanout; remove the routing_key entry from the
fanout example so the example only contains the relevant keys (type: fanout,
durable, auto_delete, declare, and the queue block with name, durable,
auto_delete, exclusive, declare) to match the documented guidance.

118-120: Format the bare URL in the hint as a proper markdown link.

A named link improves readability and is consistent with how other hints in this document reference external resources.

✏️ Proposed fix
 {% hint style="info" %}
-Read more about Nack in RabbitMQ official docs: https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue
+Read more about [Nack and requeue](https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue) in the RabbitMQ official docs.
 {% endhint %}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@queues/amqp.md` around lines 118 - 120, Replace the bare URL inside the info
hint that currently reads "Read more about Nack in RabbitMQ official docs:
https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue" with a named
markdown link (e.g., "Read more about Nack in the RabbitMQ official docs:
[RabbitMQ consumer
nacks](https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue)"); update
the hint text in the same block so the link is readable and consistent with
other hints.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@queues/amqp.md`:
- Line 288: Update the misleading link texts in the AMQP overview: replace the
anchor "[Exchange settings](kafka.md)" with "[Kafka Driver](kafka.md)" and
replace "[Queue settings](sqs.md)" with "[SQS Driver](sqs.md)" so the link text
accurately reflects the target content; ensure the surrounding sentence still
reads naturally (e.g., "Kafka Driver and SQS Driver - Compare driver
responsibilities...") and run a quick link check to confirm the targets
(kafka.md and sqs.md) remain correct.

---

Duplicate comments:
In `@grpc/interceptors.md`:
- Line 1: The page title "# gRPC Interceptors" is missing a feature version tag;
update the title line (the header string "gRPC Interceptors") to include the
appropriate release marker (e.g., "# gRPC Interceptors [>=2025.1.0]") following
the documentation guideline for versioned features, ensuring the chosen tag
reflects the actual RoadRunner release that introduced interceptors.

In `@queues/amqp.md`:
- Line 74: Update the "## Version 2 Configuration (Recommended)" heading to
include a version tag indicating when it was introduced (e.g., append a
[>=2024.2.0]-style tag); edit the heading line that currently reads "## Version
2 Configuration (Recommended)" in queues/amqp.md and add the appropriate version
bracket tag right after the heading text so it follows the project's
documentation guideline for marking feature-introduction versions.

---

Nitpick comments:
In `@grpc/interceptors.md`:
- Around line 12-13: Replace the phrase "At the moment" with "Currently" in the
sentence that reads "At the moment, RoadRunner supports unary gRPC interceptors
(`grpc.UnaryServerInterceptor`)." in grpc/interceptors.md so the line reads
"Currently, RoadRunner supports unary gRPC interceptors
(`grpc.UnaryServerInterceptor`). This is a simple wording change — search for
the exact phrase "At the moment, RoadRunner supports unary gRPC interceptors
(`grpc.UnaryServerInterceptor`)" and update it.
- Around line 86-93: The overview list for "Build a custom RR binary with
interceptor (step by step)" is missing a reference to the "### 4a) Build RR with
Velox (alternative)" sub-section; update the overview to either insert a new
item "4a. Build RR with Velox (alternative)" after step 4 or modify step 4 to
include an info callout referencing the Velox alternative (e.g., a {% hint
style="info" %} note inside step 4 pointing to "Build RR with Velox
(alternative)"), so the table-of-contents‑style summary matches the actual
sub-headings.

In `@queues/amqp.md`:
- Around line 192-202: The example uses a fanout exchange but still includes the
routing_key field (see queue.name: test-1-queue and routing_key: test-1), which
contradicts the guidance that routing_key is only required when exchange.type !=
fanout; remove the routing_key entry from the fanout example so the example only
contains the relevant keys (type: fanout, durable, auto_delete, declare, and the
queue block with name, durable, auto_delete, exclusive, declare) to match the
documented guidance.
- Around line 118-120: Replace the bare URL inside the info hint that currently
reads "Read more about Nack in RabbitMQ official docs:
https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue" with a named
markdown link (e.g., "Read more about Nack in the RabbitMQ official docs:
[RabbitMQ consumer
nacks](https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue)"); update
the hint text in the same block so the link is readable and consistent with
other hints.

1. [Queues and Jobs overview](overview-queues.md) - Review the full jobs pipeline model before configuring AMQP in production.
2. [Read-only RabbitMQ permissions](https://www.rabbitmq.com/docs/access-control) - See declaration flags for restricted users and review the Runtime / RPC (`jobs.Declare`) section on this page for flat declaration keys.
3. [Pipeline configuration formats](../intro/config.md) - Confirm when to use `config.version: 2` versus legacy `0|1`, and review the general RoadRunner configuration structure.
4. [Exchange settings](kafka.md) and [Queue settings](sqs.md) - Compare exchange and queue responsibilities when tuning routing and consumption behavior.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify link targets in the What's Next section exist
echo "=== Files in queues/ directory ==="
fd --type f --extension md . queues/ | sort

echo ""
echo "=== Check for overview-queues.md ==="
fd --type f "overview-queues.md"

echo ""
echo "=== Check for intro/config.md ==="
fd --type f "config.md" intro/

echo ""
echo "=== Check for known-issues pages ==="
fd --type f --extension md . known-issues/ 2>/dev/null | sort || echo "known-issues directory not found"

echo ""
echo "=== Content of amqp.md around line 288 ==="
sed -n '280,295p' queues/amqp.md

Repository: roadrunner-server/docs

Length of output: 1655


"Exchange settings" → kafka.md and "Queue settings" → sqs.md are misleading link texts.

Kafka has no concept of AMQP exchanges, and SQS queue semantics differ significantly from AMQP queues. Users following these links expecting AMQP-specific guidance on exchange or queue settings will be confused. The link text should reflect the actual content — e.g., "Kafka Driver" and "SQS Driver".

✏️ Proposed fix
-4. [Exchange settings](kafka.md) and [Queue settings](sqs.md) - Compare exchange and queue responsibilities when tuning routing and consumption behavior.
+4. [Kafka Driver](kafka.md) and [SQS Driver](sqs.md) - Compare routing and consumption behavior across different queue drivers.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
4. [Exchange settings](kafka.md) and [Queue settings](sqs.md) - Compare exchange and queue responsibilities when tuning routing and consumption behavior.
4. [Kafka Driver](kafka.md) and [SQS Driver](sqs.md) - Compare routing and consumption behavior across different queue drivers.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@queues/amqp.md` at line 288, Update the misleading link texts in the AMQP
overview: replace the anchor "[Exchange settings](kafka.md)" with "[Kafka
Driver](kafka.md)" and replace "[Queue settings](sqs.md)" with "[SQS
Driver](sqs.md)" so the link text accurately reflects the target content; ensure
the surrounding sentence still reads naturally (e.g., "Kafka Driver and SQS
Driver - Compare driver responsibilities...") and run a quick link check to
confirm the targets (kafka.md and sqs.md) remain correct.

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
grpc/interceptors.md (1)

12-13: Style nit: replace "At the moment" with "Currently".

"At the moment" is verbose; a single adverb reads more concisely.

✏️ Proposed fix
-At the moment, RoadRunner supports unary gRPC interceptors (`grpc.UnaryServerInterceptor`).
+Currently, RoadRunner supports unary gRPC interceptors (`grpc.UnaryServerInterceptor`).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@grpc/interceptors.md` around lines 12 - 13, Replace the phrase "At the
moment" with "Currently" in the sentence that reads "At the moment, RoadRunner
supports unary gRPC interceptors (`grpc.UnaryServerInterceptor`)." so the line
becomes "Currently, RoadRunner supports unary gRPC interceptors
(`grpc.UnaryServerInterceptor`)." to make the wording more concise; update the
text in grpc interceptors documentation where that exact sentence appears.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@grpc/interceptors.md`:
- Around line 168-170: The velox.toml example pins most plugins to semver tags
but grpcInterceptor is set to ref "master", making builds non-reproducible;
update the grpcInterceptor entry (the grpcInterceptor ref value) to a specific
tagged release (e.g., replace "master" with the actual release tag like v1.0.0)
so the example is deterministic and won't break on future commits to the samples
repo.

---

Duplicate comments:
In `@grpc/interceptors.md`:
- Line 1: The top-level feature heading "gRPC Interceptors" is missing the
required version tag; update the heading (the line containing "# gRPC
Interceptors") to include the version marker used in our docs (e.g., "gRPC
Interceptors [>=2024.2.0]") and replace the placeholder "2025.x.x" found in the
file with the actual first release version that introduced gRPC interceptor
support so the heading and any mentions consistently show the correct release
tag.

---

Nitpick comments:
In `@grpc/interceptors.md`:
- Around line 12-13: Replace the phrase "At the moment" with "Currently" in the
sentence that reads "At the moment, RoadRunner supports unary gRPC interceptors
(`grpc.UnaryServerInterceptor`)." so the line becomes "Currently, RoadRunner
supports unary gRPC interceptors (`grpc.UnaryServerInterceptor`)." to make the
wording more concise; update the text in grpc interceptors documentation where
that exact sentence appears.

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments