Get current consumer_group offset
This commit is contained in:
26
lib/consumer_offsets_consumer_group.ex
Normal file
26
lib/consumer_offsets_consumer_group.ex
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
defmodule ConsumerOffsetsGenConsumer do
|
||||||
|
use KafkaEx.GenConsumer
|
||||||
|
|
||||||
|
alias KafkaEx.Protocol.Fetch.Message
|
||||||
|
|
||||||
|
require Logger
|
||||||
|
|
||||||
|
def handle_message_set(message_set, state) do
|
||||||
|
for %Message{key: key, offset: offset} <- message_set do
|
||||||
|
Logger.info(fn -> "offset: " <> inspect(offset) end)
|
||||||
|
|
||||||
|
consumer_group = get_consumer_group(key)
|
||||||
|
end
|
||||||
|
|
||||||
|
{:async_commit, state}
|
||||||
|
end
|
||||||
|
|
||||||
|
defp get_consumer_group(<<prefix, version, postfix::binary-size(2), consumer_group::binary>>) do
|
||||||
|
Logger.debug(fn -> "prefix: " <> inspect(prefix) end)
|
||||||
|
Logger.debug(fn -> "version: " <> inspect(version) end)
|
||||||
|
Logger.debug(fn -> "postfix: " <> inspect(postfix) end)
|
||||||
|
|
||||||
|
consumer_group
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -1,18 +1,27 @@
|
|||||||
defmodule KafkaexLagExporter do
|
defmodule KafkaexLagExporter do
|
||||||
@moduledoc """
|
use Application
|
||||||
Documentation for `KafkaexLagExporter`.
|
|
||||||
"""
|
|
||||||
|
|
||||||
@doc """
|
def start(_type, _args) do
|
||||||
Hello world.
|
import Supervisor.Spec
|
||||||
|
|
||||||
## Examples
|
consumer_group_opts = [
|
||||||
|
# setting for the ConsumerGroup
|
||||||
|
heartbeat_interval: 1_000,
|
||||||
|
# this setting will be forwarded to the GenConsumer
|
||||||
|
commit_interval: 1_000
|
||||||
|
]
|
||||||
|
|
||||||
iex> KafkaexLagExporter.hello()
|
gen_consumer_impl = ConsumerOffsetsGenConsumer
|
||||||
:world
|
consumer_group_name = "offsets_group"
|
||||||
|
topic_names = ["__consumer_offsets"]
|
||||||
|
|
||||||
"""
|
children = [
|
||||||
def hello do
|
supervisor(
|
||||||
:world
|
KafkaEx.ConsumerGroup,
|
||||||
|
[gen_consumer_impl, consumer_group_name, topic_names, consumer_group_opts]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
Supervisor.start_link(children, strategy: :one_for_one)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
5
mix.exs
5
mix.exs
@@ -14,15 +14,14 @@ defmodule KafkaexLagExporter.MixProject do
|
|||||||
# Run "mix help compile.app" to learn about applications.
|
# Run "mix help compile.app" to learn about applications.
|
||||||
def application do
|
def application do
|
||||||
[
|
[
|
||||||
extra_applications: [:logger]
|
extra_applications: [:logger],
|
||||||
|
mod: { KafkaexLagExporter, [] },
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
# Run "mix help deps" to learn about dependencies.
|
# Run "mix help deps" to learn about dependencies.
|
||||||
defp deps do
|
defp deps do
|
||||||
[
|
[
|
||||||
# {:dep_from_hexpm, "~> 0.3.0"},
|
|
||||||
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
|
|
||||||
{:kafka_ex, "~> 0.12.1"},
|
{:kafka_ex, "~> 0.12.1"},
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user