To guard against loss of data when forwarding to an indexer, you can use Splunk's indexer acknowledgment capability. With indexer acknowledgment, the forwarder will resend any data not acknowledged as "received" by the indexer.
This topic is discussed at length in the documentation link below.
Protect against loss of in-flight data
About queues :
Memory queues, used by default. A forwarder crashing/shutdown while queueing data will lose the data waiting in the memory queue.
Persistent queues, you can configure your forwarders to keep part of the data queued on disk instead of memory, they will be resumed once restarted.
see http://docs.splunk.com/Documentation/Splunk/4.3.1/Data/Usepersistentqueues
Also, this Splunk-base answer has some additional details:
http://splunk-base.splunk.com/answers/46073/does-the-indexer-acknowledgement-queuelist-persist-across-splunk-restarts
... View more