Permalink
Browse files

Add a ProducerRequest class.

A ProducerRequest instance is a very simple wrapper around a topic, partition,
and set of messages.
  • Loading branch information...
1 parent f0c688d commit 66140f213f3464896ddb4e4baa72545f2f293953 Liam Stewart committed Sep 11, 2012
Showing with 65 additions and 0 deletions.
  1. +1 −0 lib/kafka.rb
  2. +26 −0 lib/kafka/producer_request.rb
  3. +38 −0 spec/producer_request_spec.rb
View
@@ -24,6 +24,7 @@
require File.join(File.dirname(__FILE__), "kafka", "batch")
require File.join(File.dirname(__FILE__), "kafka", "message")
require File.join(File.dirname(__FILE__), "kafka", "producer")
+require File.join(File.dirname(__FILE__), "kafka", "producer_request")
require File.join(File.dirname(__FILE__), "kafka", "consumer")
module Kafka
@@ -0,0 +1,26 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module Kafka
+ class ProducerRequest
+ attr_accessor :topic, :messages, :partition
+
+ def initialize(topic, messages, options={})
+ self.topic = topic
+ self.partition = options[:partition] || 0
+ self.messages = Array(messages)
+ end
+ end
+end
@@ -0,0 +1,38 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+require File.dirname(__FILE__) + '/spec_helper'
+
+describe ProducerRequest do
+ let(:message) { Kafka::Message.new }
+ let(:req) { described_class.new("topic", message) }
+
+ it "has a topic" do
+ req.topic = "topic"
+ end
+
+ it "has a set of messages" do
+ req.messages.should == [message]
+ end
+
+ it "has a default partition" do
+ req.partition.should == 0
+ end
+
+ it "can use a user-specified partition" do
+ req = described_class.new("topic", message, partition: 42)
+ req.partition.should == 42
+ end
+end

0 comments on commit 66140f2

Please sign in to comment.