9
9
10
10
class StdInProducerCommand extends BaseRabbitMqCommand
11
11
{
12
-
12
+ const FORMAT_PHP = 'php ' ;
13
+ const FORMAT_RAW = 'raw ' ;
14
+
13
15
protected function configure ()
14
16
{
15
17
parent ::configure ();
16
18
17
19
$ this
18
20
->setName ('rabbitmq:stdin-producer ' )
19
21
->addArgument ('name ' , InputArgument::REQUIRED , 'Producer Name ' )
22
+ ->addOption ('route ' , 'r ' , InputOption::VALUE_OPTIONAL , 'Routing Key ' , '' )
23
+ ->addOption ('format ' , 'f ' , InputOption::VALUE_OPTIONAL , 'Payload Format ' , self ::FORMAT_PHP )
20
24
->addOption ('debug ' , 'd ' , InputOption::VALUE_OPTIONAL , 'Enable Debugging ' , false )
21
25
;
22
26
}
@@ -39,7 +43,21 @@ protected function execute(InputInterface $input, OutputInterface $output)
39
43
while (!feof (STDIN )) {
40
44
$ data .= fread (STDIN , 8192 );
41
45
}
46
+
47
+ $ route = $ input ->getOption ('route ' );
48
+ $ format = $ input ->getOption ('format ' );
49
+
50
+ switch ($ format ) {
51
+ case self ::FORMAT_RAW :
52
+ break ; // data as is
53
+ case self ::FORMAT_PHP :
54
+ $ data = serialize ($ data );
55
+ break ;
56
+ default :
57
+ throw new \InvalidArgumentException (sprintf ('Invalid payload format "%s", expecting one of: %s. ' ,
58
+ $ format , implode (', ' , [self ::FORMAT_PHP , self ::FORMAT_RAW ])));
59
+ }
42
60
43
- $ producer ->publish (serialize ( $ data) );
61
+ $ producer ->publish ($ data, $ route );
44
62
}
45
63
}
0 commit comments