Red Hat
Jan 25, 2013
by The Entire TorqueBox Team

We're very excited to announce the release of TorqueBox 2.3.0! We hit a couple of unexpected delays with this release but hopefully the list of new features and bug fixes will make it worth the wait.

What is TorqueBox?

TorqueBox is a Ruby application server built on JBoss AS7 and JRuby. In addition to being one of the fastest Ruby servers around, it supports Rack-based web frameworks, and provides simple Ruby interfaces to standard JavaEE services, including scheduled jobs, caching, messaging, and services.

Highlights of major changes

  • The bundled JRuby version has been updated from 1.7.1 to 1.7.2.

  • RubyMine 5 will ship with TorqueBox graphical debugging support. This has been tested with TorqueBox 2.2.0 and TorqueBox 2.3.0 but should work with earlier TorqueBox 2 versions.

  • Messaging Queues and Topics have a few more convenience methods. You can get a list of all Queues and Topics deployed in the server as well as pausing, resuming, counting, and clearing messages. See the Queue and Topic RDocs for more details.

  • You can now easily change the HTTP port TorqueBox uses with a new -p option to torquebox run. For example, torquebox run -p 3000

  • Distributed transactions (XA) are now disabled by default for databases and message processors. There are some edge cases that new TorqueBox users occasionally hit around our XA support and by disabling it by default we hope to keep the new user experience as smooth as possible.

  • TorqueBox should now work out of the box with the latest activerecord-jdbc-adapter gems. They made a change in 1.2.5 that broke some assumptions made by TorqueBox and this is now fixed.

  • TorqueBox should now work out of the box with the latest Rack gems. Rack 1.4.3 also made a change that caused basic Rack applications running in 1.9 mode (Sinatra and Rails applications appear unaffected) to not work. In this case the issue was TorqueBox not behaving exactly as specified in the Rack spec with regards to the response body.

  • A bug was found that caused messages sent with a non-default priority level and consumed by a message processor to get resent on the next TorqueBox restart. This was a bug in our distributed transactions code and has been fixed. Additionally, as mentioned above, distributed transactions are disabled by default for message processors now.

  • We've added a more complex example application to our Getting Started Guide. Check out Chapter 3. Poorsmatic for more details.

Upgrading from 2.2.0

  • No change is required in the AS7 configuration files to upgrade from TorqueBox 2.2.0 to 2.3.0.

  • If you relied on distributed transactions in previous TorqueBox versions, be sure to add an 'xa: true' entry to your appropriate database.yml and torquebox.yml entries. See our transactions documentation for more details.

  • The format of synchronous messages (ones sent via publish_and_receive and receive_and_publish methods) has changed slightly. Do not mix 2.3.0 with earlier TorqueBox versions in a cluster if you use synchronous messaging.

Don't be a stranger!

As always, if you have any questions about or issues with TorqueBox, please get in touch.

Issues resolved since 2.2.0

  • [TORQUE-547] - Support Debugging From RubyMine IDE
  • [TORQUE-579] - Provide Simple Way to Change HTTP Port TorqueBox Uses
  • [TORQUE-636] - TorqueBox should have quickstarts and tests for common deployment scenarios
  • [TORQUE-740] - Provide an API to list Queues and Topics from Ruby
  • [TORQUE-790] - Scheduled message delivery
  • [TORQUE-801] - Document FutureProxy.
  • [TORQUE-825] - Add an option to disable distributed transactions for message processors
  • [TORQUE-832] - Expose pause/resume queue functionality in Ruby
  • [TORQUE-888] - Add clear queue method to TorqueBox::Messaging::Queue
  • [TORQUE-905] - Additional useful methods in torquebox-no-op
  • [TORQUE-910] - Create Example Application Showcasing TorqueBox Features
  • [TORQUE-983] - MessageProcessors broken for messages sent with non-default priorities
  • [TORQUE-984] - Parse erb in *-knob.yml with GlobalRuby
  • [TORQUE-986] - description option not allowed in job section of DSL config
  • [TORQUE-987] - Torquebox under Windows is case sensitive to the PATH environmental variable
  • [TORQUE-989] - Require users to explicitly enable distributed transactions for their database
  • [TORQUE-990] - Native sendfile for rack
  • [TORQUE-992] - Upgrade to JRuby 1.7.2
  • [TORQUE-993] - Rack 1.4.3 and TorqueBox broken in 1.9 apps
  • [TORQUE-999] - "timeout" option not allowed in job section of DSL configuration
  • [TORQUE-1000] - Absolute Prefix for spec tests on Windows is hardcoded
  • [TORQUE-1001] - publish_and_receive shouldn't wrap the message in a hash
  • [TORQUE-1002] - receive_and_publish should default to the encoding of the received message
  • [TORQUE-1003] - Disable distributed transactions for message processors by default
  • [TORQUE-1005] - Disable Quartz update check